Найти сумму и произведение всех элементов массива - Pascal
Формулировка задачи:
Дана задача, нужно ее изменить, желательно с пояснением.
----------------------------------
Дан двумерный массив A (m, n). Найти сумму и произведение всех элементов, а также вычислить минимальный и максимальный элементы.
Исправить программу так, чтобы она находила сумму и произведение элементов выше главной диагонали.
Program lab5;
Var
A: array [1..10,1..15] of real;
i, j, m, n: integer; s, p, min, max: real;
Begin
writeln('Введи m,n'); read(m,n);
writeln('Введи массив A');
for i:=1 to m do
for j:=1 to n do
read(A[i,j]);
s:=0; p:=1; min:=A[1,1]; max:=A[1,1];
for i:=1 to m do for j:=1 to n do
begin
s:=s+A[i,j]; p:=p*A[i,j];
if A[i,j]<min then min:=A[i,j];
if A[i,j]>max then max:=A[i,j];
end;
writeln('s=',s:10:3,' p=',p:10:3,
' min=',min:10:3,' max=',max:10:3);
End.Решение задачи: «Найти сумму и произведение всех элементов массива»
textual
Листинг программы
var
a: Array [Byte, Byte] Of Real;
i, j, m, n, iMin, jMin, iMax, jMax: Byte;
s, p: Real;
begin
{проверяем корректность ввода размеров матрицы}
repeat
Write('Input n=');
ReadLn(n);
until (n > 0);
repeat
Write('Input m=');
ReadLn(m);
until (m > 0);
s := 0; p := 1;
iMin := 0; iMax := 0;
jMin := 0; jMax := 0;
{вводим данные матрицы и одновременно производим поиски/вычисления}
for i := 0 to n - 1 do
for j := 0 to m - 1 do
begin
Write('a[', i + 1, '][', j + 1, ']=');
ReadLn(a[i, j]);
if (j > i)
then //если мы находимся выше главной диагонали
begin
s := s + a[i, j];
p := p * a[i, j];
end;
if (a[i, j] < a[iMin, jMin])
then //ищем минимум по всей матрице
begin
iMin := i;
jMin := j;
end;
if (a[i, j] > a[iMax, jMax])
then //ищем максимум по всей матрице
begin
iMax := i;
jMax := j;
end;
end;
WriteLn('s=', s:0:3, ' p=', p:0:3);
WriteLn('min=', a[iMin, jMin]:0:3, ' max=', a[iMax, jMax]:0:3);
end.
Объяснение кода листинга программы
- Объявление переменных:
a: Array [Byte, Byte] Of Real;- двумерный массив чисел с плавающей запятойi, j, m, n, iMin, jMin, iMax, jMax: Byte;- переменные типа Byte для циклов и поиска минимума и максимумаs, p: Real;- переменные для хранения суммы и произведения элементов массива
- Проверка корректности ввода размеров матрицы:
- Пользователю предлагается ввести значение
nдо тех пор, пока введенное значение не будет больше 0 - Пользователю предлагается ввести значение
mдо тех пор, пока введенное значение не будет больше 0
- Пользователю предлагается ввести значение
- Инициализация переменных:
sиpустанавливаются в 0 для хранения суммы и произведения соответственноiMin,iMax,jMin,jMaxустанавливаются в 0 для хранения координат минимального и максимального элемента
- Ввод данных и одновременные поиски/вычисления:
- Циклы для ввода элементов массива и выполнения поиска и вычислений
- Если элемент находится выше главной диагонали, его значение добавляется к сумме
sи умножается на значениеp - Находится минимальное и максимальное значение в массиве и их координаты сохраняются
- Вывод результатов:
- Вывод суммы
sи произведенияpс точностью до 3 десятичных знаков - Вывод минимального и максимального значений в массиве с точностью до 3 десятичных знаков.
- Вывод суммы