Исправьте ошибки. Найти произведение элементов массива, расположенных между максимальным...

0 голосов
129 просмотров

Исправьте ошибки. Найти произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами (Паскаль)
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<br> 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, если между максимальным и минимальным по модулю элементом нет других элементов.


Информатика (529 баллов) | 129 просмотров
0

И файл Input зачем он тебе сдался то ?

0

Это вводятся значения в нем. Так по условию надо

0

Допустим, если ввести во входной файл 5.2 и -8.5, то в выходном файле должно быть 0.000

0

ок.amax:=a[i]; i2:=i;

0

тут ты нашла максимальное значение из элементов и присвоила НОМЕР элемента i2

0

ЧТо должно выводиться по условию в output ?

0

Выведите в выходной файл искомое произведение с 3 знаками после десятичной точки или 0 , если между максимальным и минимальным по модулю элементом нет других элементов.

0

в чем ошибка,в том что 0 не выводится,или что?

0

да

0

если ввести во входной файл 5.2 и -8.5, то в выходном файле выводится 01.000, а должно быть 0.000

Дан 1 ответ
0 голосов
var  i, n: longint;
  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<br>        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.
(114 баллов)