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

Помогите найти ошибки - Паскаль. Условие: Дан одномерный массив, состоящий из вещественных элементов. Найти произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами. Не совсем то выводит 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] 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.
Гость
Ответ(ы) на вопрос:
Гость
Вот программа С использованием файлов 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]; +++Много лишних переменных
Не нашли ответ?
Ответить на вопрос
Похожие вопросы