Работа с процендурами/функциями - 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.

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

  1. В программе объявлены переменные nmax, m и a типа byte и integer соответственно.
  2. В процедуре In_Mas используется переменная i типа byte и переменная j типа byte.
  3. В процедуре In_Mas используется цикл for, который выполняется nmax раз.
  4. Внутри цикла for выполняется еще один цикл for, который выполняется size_n раз.
  5. Внутри второго цикла for переменная a[i,j] инициализируется случайным числом от 1 до 20.
  6. Значение переменной a[i,j] записывается в переменную m.
  7. Выводится значение переменной m с помощью функции write.
  8. После окончания второго цикла for выполняется функция write с аргументом 4, чтобы вывести значение переменной m.
  9. Выводится символ новой строки с помощью функции write.
  10. В процедуре Summa используется переменная mx типа longint и переменная sm типа longint.
  11. В процедуре Summa используется цикл for, который выполняется size_n раз.
  12. Внутри цикла for переменная sm инициализируется нулем.
  13. Внутри второго цикла for переменная mx инициализируется нулем.
  14. Если i равно 1, то значение переменной mx увеличивается на значение переменной a[i,j].
  15. Если значение переменной sm больше значения переменной mx, то значение переменной mx обновляется.
  16. Выводится максимальная сумма в строке с помощью функции write.
  17. Выводится номер строки с максимальной суммой с помощью функции write.
  18. Выводится символ новой строки с помощью функции write.
  19. Программа повторяется до тех пор, пока n и m не станут равными 0.
  20. Программа завершается.

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


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

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

6   голосов , оценка 3.667 из 5