Найти максимальную сумму элементов строк в один проход массива - 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
- После завершения циклов выводится максимальная сумма и номер строки, в которой она была найдена
- Завершается работа программы