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