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

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

Ответы

Автор ответа: tukilan
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
        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.
Похожие вопросы
Предмет: Кыргыз тили, автор: asemaax
Предмет: Математика, автор: Максимилианус