Есть массив, одномерный, нужно найти произведение элементов между максимальным и минимальными элементами. Так вот, не знаю как сделать так, что бы если минимальный элемент стоит перед максимальным в массиве, произведение находилось от минимального до максимального, то есть наоборот. Вроде написал правильно, сначало находим максимальный элемент, присваиваем переменной, потом минимальный, то же присваиваем, потом уже произведение находим, но почиму то выводиться только 1 в ответ.
Создание массива
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin //sozdat' massiv
edit2.Clear;
n:=strtoint(edit1.Text);
setlength(d,n);
randomize;
for i:=0 to n-1 do
begin
d[i]:=round(40*random-20);
edit2.text:=edit2.text+inttostr(d[i])+' ';
end;
end;
Нахождение произведения
Код:
procedure TForm1.Button3Click(Sender: TObject); //pr
var max,min,maxi,mini,pr,pr1:integer;
begin
pr:=1;
pr1:=1 ;
max:=d[1];
min:=d[1];
maxi:=1;
mini:=1;
for i:=0 to N-1 do begin //nahodim max element matrici
if d[i]>max then begin
max:=d[i];
maxI:=i;
end;
edit6.text:=inttostr(max); //vivodim max
end;
for i:=0 to N-1 do begin //nahodim min element matrici
if d[i]<min then begin
min:=d[i];
minI:=i;
end;
edit7.text:=inttostr(min); //vivodim min
end;
if maxi > mini then begin //nachinaem shitat'
for i:=maxI+1 to minI-1 do begin
pr:=pr*d[i] ;
end;
edit4.Text:=inttostr(pr);
end;
end;