Работа с процендурами/функциями - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Оформить операцию обработки двумерного массива, приведенную ниже, в виде подпрограммы (процедуры или функции). Написать главную программу, которая вызывает данную подпрограмму.
Листинг программы
  1. program ann;
  2. uses crt;
  3. const nmax=5;
  4. var a: array[1..nmax,1..nmax] of integer;
  5. m,n,i,j,imx:byte;
  6. sm,mx:longint;
  7. begin
  8. clrscr;
  9. randomize;
  10. repeat
  11. write('Количество строк до ',nmax,' n=');
  12. readln(n);
  13. until n in [1..nmax];
  14. repeat
  15. write('Количество столбцов до ',nmax,' m=');
  16. readln(m);
  17. until m in [1..nmax];
  18. writeln('Исходная матрица:');
  19. mx:=0;imx:=1; //пусть первая строка максимальна
  20. for i:=1 to n do
  21. begin
  22. for j:=1 to m do
  23. begin
  24. a[i,j]:=random(20)+1;
  25. write(a[i,j]:4);
  26. if i=1 then mx:=mx+a[i,j];//её сумма
  27. end;
  28. writeln;
  29. end;
  30. writeln;
  31. for i:=1 to n do //остальные строки
  32. begin
  33. sm:=0;
  34. for j:=1 to m do
  35. sm:=sm+a[i,j];
  36. writeln('Сумма в строке ',i,'=',sm);
  37. if sm>mx then
  38. begin
  39. mx:=sm;
  40. imx:=i;//номер строки с максимальной суммой
  41. end;
  42. end;
  43. writeln;
  44. write('Максимальная сумма в строке ',imx,'=',mx);
  45. readln;
  46. end.

Решение задачи: «Работа с процендурами/функциями»

textual
Листинг программы
  1. program ann;
  2. uses crt;
  3. const nmax=5;
  4. type  massiv = array [1..nmax, 1..nmax] of integer;
  5. var   a : massiv;
  6.       m,n : byte;
  7.    
  8. Procedure In_Mas(var mas:massiv; size_n, size_m:byte);
  9.           var i, j : byte;
  10.           Begin
  11.                Randomize;
  12.                for i:=1 to size_n do
  13.                begin
  14.                     for j:=1 to size_m do
  15.                     begin
  16.                          a[i,j]:=random(20)+1;
  17.                          write(a[i,j]:4);
  18.                     end;
  19.                     WriteLn;
  20.                end;
  21.           End;
  22.  
  23. Procedure Summa(const mas:massiv; size_n, size_m:byte);
  24.           var i, j, imx : byte;
  25.               sm,mx:longint;
  26.           Begin
  27.                mx:=0;imx:=1; //пусть первая строка максимальна
  28.                for i:= 1 to size_n do
  29.                    for j:=1 to size_m do
  30.                        if i=1 then mx:=mx+mas[i,j];//её сумма
  31.                WriteLn;
  32.                for i:=1 to size_n do //остальные строки
  33.                begin
  34.                     sm:=0;
  35.                     for j:=1 to size_m do
  36.                         sm:=sm+mas[i,j];
  37.                     writeln('Сумма в строке ',i,'=',sm);
  38.                     if sm>mx then
  39.                     begin
  40.                          mx:=sm;
  41.                          imx:=i;//номер строки с максимальной суммой
  42.                     end;
  43.                end;
  44.                writeln;
  45.                write('Максимальная сумма в строке ',imx,'=',mx);
  46.           End;
  47.          
  48. begin
  49.      clrscr;
  50.  
  51.      repeat
  52.            write('Количество строк до ',nmax,' n=');
  53.            readln(n);
  54.      until n in [1..nmax];
  55.  
  56.      repeat
  57.            write('Количество столбцов до  ',nmax,' m=');
  58.            readln(m);
  59.      until m in [1..nmax];
  60.  
  61.      writeln('Исходная матрица:');
  62.      In_Mas(a, n, m);
  63.      Summa(a, n, m);
  64.      ReadLn;
  65. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут