Проверьте пожалуйста программу - 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.
Решение задачи: «Проверьте пожалуйста программу»
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.
Объяснение кода листинга программы
- В программе объявлены переменные: a (массив), i, x, imax, imin, max, min, b, Rt (single), s (single), mult (integer), tempmin (integer), tempmax (integer).
- В цикле for считывается массив из стандартного ввода.
- Переменные imax и imin инициализируются значением 1.
- Затем происходит сравнение абсолютных значений элементов массива и обновление значений переменных imax и imin.
- Если imax меньше imin, то происходит обмен их значениями.
- Переменная s инициализируется значением 0.
- В цикле for происходит суммирование положительных элементов массива и сохранение суммы в переменной s.
- Переменная Rt инициализируется значением 1.
- В цикле for происходит умножение всех элементов массива, начиная с индекса imin+1 и заканчивая индексом imax-1, и сохранение произведения в переменной Rt.
- Выводится сообщение с произведением между максимальным и минимальным элементами массива и с суммой положительных элементов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д