Найти максимальную сумму элементов строк в один проход массива - Pascal ABC
Формулировка задачи:
2) Напишите программу, решающую поставленную задачу в один проход массива.
задача:Ищет в двумерном массиве строку, сумма элементов которой максимальна.
Решение задачи: «Найти максимальную сумму элементов строк в один проход массива»
textual
Листинг программы
uses crt; const nmax=15; var a:array[1..nmax,1..nmax] of integer; m,n,i,j,imx:byte; sm,mx:integer; begin randomize; repeat write('Количество строк до ',nmax,' m='); read(m); until m in [1..nmax]; repeat write('Количество столбцов до ',nmax,' n='); read(n); until n in [1..nmax]; writeln('Исходная матрица:'); writeln(' №','Сумма:':n*4+8); mx:=-maxint-1; imx:=0; for i:=1 to m do begin write(i:2); sm:=0; for j:=1 to n do begin a[i,j]:=random(20); write(a[i,j]:4); sm:=sm+a[i,j]; end; writeln(sm:6); if sm>mx then begin mx:=sm; imx:=i; end; end; writeln; write('Максимальная сумма=',mx,' в строке ',imx); end.
Объяснение кода листинга программы
- Объявлены переменные:
- a: массив 2-мерных целых чисел
- m, n, i, j, imx: целочисленные переменные для работы с циклами
- sm, mx: переменные для хранения текущей суммы и максимальной суммы
- Задаются начальные значения для циклов
- Пользователю предлагается ввести количество строк и столбцов матрицы
- Выводится исходная матрица, построчно суммируются элементы строк
- Переменная mx инициализируется значением -maxint-1, а imx=0
- Происходит обход матрицы в двух циклах, где:
- i - номер строки
- j - номер столбца
- В каждой итерации цикла элементам матрицы присваивается случайное значение из диапазона [1..20]
- К каждому элементу матрицы прибавляется его значение и сохраняется в переменной sm
- Если sm больше текущего значения mx, то обновляются значения mx и imx
- После завершения циклов выводится максимальная сумма и номер строки, в которой она была найдена
- Завершается работа программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д