Проверьте пожалуйста программу - Pascal ABC

Формулировка задачи:

Помогите найти ошибку В одномерном массиве, состоящем из n вещественных элементов, вычислить 1) сумму положительных элементов массива 2) произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами.
program Labaaaa3;
//uses crt;
const
  n = 10;
var
  a: array[1..n] of integer;
  i, x, imax, imin: integer;
  max, min, b, Rt: integer;
  s: integer;
  mult: integer;
  tempmin, tempmax: integer;
begin
  write('Введите массив: ');
  for i := 1 to n do
    read(a[i]);
  imax := 1; {индекс max}
  imin := 1; {индекс max}
  for i := 1 to n do
  begin
    if a[imax] < a[i] then imax := i;
    if a[imin] > a[i] then imin := i;
  end;
  if imin > imax then
  begin
    imin := imin + imax;
    imax := imin - imax;
    imin := imin - imax;
  end;
  x := imax div 2;
  for i := imin + 1 to x do
  begin
    a[i] := a[i] + a[n + imin - i];
    a[n + imin - i] := a[i] - a[n + imin - i];
    a[i] := a[i] - a[n + imin - i];
  end;
  for i := 1 to n do
    write(a[i], ' ');
  s := 0;
  for i := 1 to n do
    if a[i] > 0 then
    begin
      s := s + a[i];
    end;
 
  //---
  for i := tempmax to n do
    tempmin := i;
  mult := i;
  Rt := i;
    if (a[i] < max) then
    tempmax := i;
 
  if (a[i] > min) then
    tempmin := i;
 
  //+
  if (tempmin < tempmax) then
  begin
    b := tempmin;
    tempmin := tempmax;
    tempmax := b;
  end;
 
  //--
  begin
    Rt := Rt * a[i];
    tempmax := tempmax - 1;
    tempmin := tempmin + 1;
  end;
  Writeln('Произведение между максимальным и минимальным=', Rt);
  Writeln('Сумма положительных элементов =', s:5);
  Readln;
end.

Код к задаче: «Проверьте пожалуйста программу - Pascal ABC»

textual
program Labaaaa3;
//uses crt;
const
  n = 10;
 
var
  a: array[1..n] of single;
  i, x, imax, imin: integer;
  max, min, b, Rt: single;
  s: single;
  mult: integer;
  tempmin, tempmax: integer;
 
begin
  write('Введите массив: ');
  for i := 1 to n do
    read(a[i]);
  imax := 1; {индекс max}
  imin := 1; {индекс max}
  for i := 1 to n do
  begin
    if abs(a[imax]) < abs(a[i]) then imax := i;
    if abs(a[imin]) > abs(a[i]) then imin := i;
  end;
  if imax < imin
    then swap(imax, imin);
  s := 0;
  for i := 1 to n do
    if a[i] > 0 then
    begin
      s := s + a[i];
    end;
  Rt := 1;
  //---
  for i := imin + 1 to imax - 1 do
    Rt := Rt * a[i];
  Writeln('Произведение между максимальным и минимальным=', Rt);
  Writeln('Сумма положительных элементов =', s:5);
end.

11   голосов, оценка 3.818 из 5


СОХРАНИТЬ ССЫЛКУ