Работа с процендурами/функциями - Pascal ABC
Формулировка задачи:
Оформить операцию обработки двумерного массива, приведенную ниже, в виде подпрограммы (процедуры или функции). Написать главную программу, которая вызывает данную подпрограмму.
Решение задачи: «Работа с процендурами/функциями»
textual
Листинг программы
program ann;
uses crt;
const nmax=5;
type massiv = array [1..nmax, 1..nmax] of integer;
var a : massiv;
m,n : byte;
Procedure In_Mas(var mas:massiv; size_n, size_m:byte);
var i, j : byte;
Begin
Randomize;
for i:=1 to size_n do
begin
for j:=1 to size_m do
begin
a[i,j]:=random(20)+1;
write(a[i,j]:4);
end;
WriteLn;
end;
End;
Procedure Summa(const mas:massiv; size_n, size_m:byte);
var i, j, imx : byte;
sm,mx:longint;
Begin
mx:=0;imx:=1; //пусть первая строка максимальна
for i:= 1 to size_n do
for j:=1 to size_m do
if i=1 then mx:=mx+mas[i,j];//её сумма
WriteLn;
for i:=1 to size_n do //остальные строки
begin
sm:=0;
for j:=1 to size_m do
sm:=sm+mas[i,j];
writeln('Сумма в строке ',i,'=',sm);
if sm>mx then
begin
mx:=sm;
imx:=i;//номер строки с максимальной суммой
end;
end;
writeln;
write('Максимальная сумма в строке ',imx,'=',mx);
End;
begin
clrscr;
repeat
write('Количество строк до ',nmax,' n=');
readln(n);
until n in [1..nmax];
repeat
write('Количество столбцов до ',nmax,' m=');
readln(m);
until m in [1..nmax];
writeln('Исходная матрица:');
In_Mas(a, n, m);
Summa(a, n, m);
ReadLn;
end.
Объяснение кода листинга программы
- В программе объявлены переменные nmax, m и a типа byte и integer соответственно.
- В процедуре In_Mas используется переменная i типа byte и переменная j типа byte.
- В процедуре In_Mas используется цикл for, который выполняется nmax раз.
- Внутри цикла for выполняется еще один цикл for, который выполняется size_n раз.
- Внутри второго цикла for переменная a[i,j] инициализируется случайным числом от 1 до 20.
- Значение переменной a[i,j] записывается в переменную m.
- Выводится значение переменной m с помощью функции write.
- После окончания второго цикла for выполняется функция write с аргументом 4, чтобы вывести значение переменной m.
- Выводится символ новой строки с помощью функции write.
- В процедуре Summa используется переменная mx типа longint и переменная sm типа longint.
- В процедуре Summa используется цикл for, который выполняется size_n раз.
- Внутри цикла for переменная sm инициализируется нулем.
- Внутри второго цикла for переменная mx инициализируется нулем.
- Если i равно 1, то значение переменной mx увеличивается на значение переменной a[i,j].
- Если значение переменной sm больше значения переменной mx, то значение переменной mx обновляется.
- Выводится максимальная сумма в строке с помощью функции write.
- Выводится номер строки с максимальной суммой с помощью функции write.
- Выводится символ новой строки с помощью функции write.
- Программа повторяется до тех пор, пока n и m не станут равными 0.
- Программа завершается.