Исправьте ошибки. Найти произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами (Паскаль)
var
i,n,i1,i2:longint;
a:array[1..100] of real;
amin,amax,p:real;
begin
assign (input,'input.txt');
assign (output,'output.txt');
reset (input);
rewrite (output);
readln(n);
p:=1;
for i:=1 to n do read (a[i]);
amin:=a[1];
for i:=1 to n do
if abs(amin)>=abs(a[i]) then
begin
amin:=a[i];
i1:=i;
end;
amax:=a[1];
for i:=1 to n do
if abs(amax)<=abs(a[i]) then
begin
amax:=a[i];
i2:=i;
end;
if (i2>i1) and (i1+1<>i2) then
for i:=i1+1 to i2-1 do
p:=p*a[i] else
if (i1>i2) and (i1-1<>i2) then
for i:=i1-1 downto i2+1 do
p:=p*a[i] else
begin
write('0');
end;
write (abs(p):0:3);
close (input);
close (output);
end.
в ответе в выходном файле необходимо вывести 0.000, если между максимальным и минимальным по модулю элементом нет других элементов.
Answers & Comments
a: array[1..10] of real;
amin, amax, p: real;
begin
assign(output, 'output.txt');
rewrite(output);
readln(n);
if n = 2 then
begin
writeln('0 ');
close(output);
end
else
begin
p := 1;
for i := 1 to n do
read(a[i]);
amin := a[1];
for i := 1 to n do
if amin >= abs(a[i]) then
amin := a[i];
amax := a[1];
for i := 1 to n do
begin
if amax <= a[i] then
amax := a[i];
end;
if n > 2 then
for i := 2 to n - 1 do
p := p * a[i];
write(p:0:3);
close(output);
end;
end.