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

  • 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.

See also: