Задание:
Помогите найти ошибки — Паскаль. Условие: Дан одномерный массив, состоящий из вещественных элементов. Найти произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами. Не совсем то выводитprogram proizvedenie; var q,z,w,i,n,i1,i2: integer; a: array[1… 1000] of real; amin,amax,pr: real; beginassign (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 dobeginif a[i]
Решение:
Вот программаС использованием файловprogram proizvedenie; uses crt; var a: array[1… 1000] of real; amax,amin,p: real; i,n,i1,i2: integer; inp,outp: text; beginassign (inp,'input.txt'); assign (outp,'output.txt'); readln (n); p: =1; reset (inp); for i: =1 to n doread (inp,a[i]); close (inp); amin: =a[1]; for i: =1 to n doif abs (amin) >=abs (a[i]) then begin amin: =a[i]; i1: =i; end; amax: =a[1]; for i: =1 to n doif abs (amax) <= abs (a[i]) then begin amax: =a[i]; i2: =i; end; if (i2>i1) and (i1+1<>i2) thenfor i: =i1+1 to i2-1 dop: =p*a[i] elseif (i1>i2) and (i1-1<>i2) thenfor i: =i1-1 downto i2+1 dop: =p*a[i] else beginwrite (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; beginp: =1; readln (n); for i: =1 to n doread (a[i]); amin: =a[1]; for i: =1 to n doif abs (amin) >=abs (a[i]) then begin amin: =a[i]; i1: =i; end; amax: =a[1]; for i: =1 to n doif abs (amax) <= abs (a[i]) then begin amax: =a[i]; i2: =i; end; if (i2>i1) and (i1+1<>i2) thenfor i: =i1+1 to i2-1 dop: =p*a[i] elseif (i1>i2) and (i1-1<>i2) thenfor i: =i1-1 downto i2+1 dop: =p*a[i] else beginwrite (0); exit; end; write (p); end. Ошибки: 1) В разделе описания переменных var нет файловых переменных input и output; 2) В строке 24 нет begin… end; 3) Сравнивать нужно модули переменных amin и amax с модулем a[i]; + Много лишних переменных
Знаете другой ответ?