Найти сумму и произведение всех элементов массива - 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.

Объяснение кода листинга программы

  1. Объявление переменных:
    • a: Array [Byte, Byte] Of Real; - двумерный массив чисел с плавающей запятой
    • i, j, m, n, iMin, jMin, iMax, jMax: Byte; - переменные типа Byte для циклов и поиска минимума и максимума
    • s, p: Real; - переменные для хранения суммы и произведения элементов массива
  2. Проверка корректности ввода размеров матрицы:
    • Пользователю предлагается ввести значение n до тех пор, пока введенное значение не будет больше 0
    • Пользователю предлагается ввести значение m до тех пор, пока введенное значение не будет больше 0
  3. Инициализация переменных:
    • s и p устанавливаются в 0 для хранения суммы и произведения соответственно
    • iMin, iMax, jMin, jMax устанавливаются в 0 для хранения координат минимального и максимального элемента
  4. Ввод данных и одновременные поиски/вычисления:
    • Циклы для ввода элементов массива и выполнения поиска и вычислений
    • Если элемент находится выше главной диагонали, его значение добавляется к сумме s и умножается на значение p
    • Находится минимальное и максимальное значение в массиве и их координаты сохраняются
  5. Вывод результатов:
    • Вывод суммы s и произведения p с точностью до 3 десятичных знаков
    • Вывод минимального и максимального значений в массиве с точностью до 3 десятичных знаков.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.615 из 5
Похожие ответы