Предмет: Информатика, автор: Ольга35

Помогите найти ошибки - Паскаль.
Условие: Дан одномерный массив, состоящий из вещественных элементов. Найти произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами.

Не совсем то выводит
program proizvedenie;
var q,z,w,i,n,i1,i2:integer;
a:array[1..1000] of real;
amin,amax,pr:real;
begin
assign (input,'input.txt');
assign (output,'output.txt');
reset (input);
rewrite (output);
readln(n);
for i:=1 to n do read (a[i]);
amin:=a[1];
for i:=1 to n do
begin
if a[i]<amin then
begin
amin:=a[i];
i1:=i;
end;
end;
amax:=a[1];
for i:=1 to n do
begin
if a[i] > amax then
amax:=a[i];
i2:=i;
end;
if i2>i1 then begin
q:=i1;
w:=i2;
end
else begin
q:=i2;
w:=i1;
end;
if (w-q)>1 then begin
pr:=1;
for z:=q to w do
pr:=pr*a[z];
end
else write (0);
close (input);
close (output);
end.

Ответы

Автор ответа: vad580
0
Вот программа
С использованием файлов

program proizvedenie;
uses crt;
var a:array[1..1000] of real;   
amax,amin,p:real;   
i,n,i1,i2:integer;    inp,outp:text;
begin
assign(inp,'input.txt');
assign(outp,'output.txt');
readln(n);
p:=1;
reset(inp);
for i:=1 to n do
read(inp,a[i]);
close(inp);
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); exit; end;
rewrite(outp);
write(outp,p);
close(outp);
end.
Без файлов
program proizvedenie;
uses crt;
var a:array[1..1000] of real;   
 amax,amin,p:real;   
i,n,i1,i2:integer;
begin
p:=1;
readln(n);
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); exit; end;
write(p);
end.

Ошибки:
1)В разделе описания переменных var нет файловых переменных input и output;
2)В строке 24 нет begin...end;
3)Сравнивать нужно модули переменных amin и amax с модулем a[i];
+++Много лишних переменных
Похожие вопросы
Предмет: Математика, автор: rengokusan