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

Ответы 1

  • 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.
    • Автор:

      frankeqd5
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years