В заданных строках матрицы все чётные элементы увеличить на младшую цифру первого элемента строки - Pascal

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

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

Дана целочисленная матрица размером NxN. В строках,содержащих наибольшее количество положительных элементов , все четные элементы увеличить на младшую цифру первого элемента этой строки

Решение задачи: «В заданных строках матрицы все чётные элементы увеличить на младшую цифру первого элемента строки»

textual
Листинг программы
  1. const N = 5;
  2. const M = N;
  3.  
  4. const MIN_ELEM = 0;
  5.  
  6. type item_t = integer;
  7. type line_t = array[1..M] of item_t;
  8. type tabl_t = array[1..N] of line_t;
  9.  
  10. procedure printLine( const l: line_t );
  11. var
  12.   i: integer;
  13. begin
  14.   for i:= 1 to M do
  15.     write(l[i] :5);
  16.   writeln;  
  17. end;
  18. procedure printTabl( const t: tabl_t );
  19. var
  20.   i: integer;
  21. begin
  22.   for i:= 1 to N do
  23.     printLine(t[i]);
  24. end;
  25.  
  26. procedure init_2d( var a: tabl_t );
  27. var
  28.   x,y: integer;
  29. begin
  30.     for y:=1 to N do
  31.       for x:=1 to M do
  32.         a[y][x] := random(-100 , 100);
  33. end;
  34.  
  35. function getCountP( const a: line_t ):integer;
  36. var  
  37.   r,x: integer;
  38. begin
  39.     r := 0;
  40.     for x:=1 to M do
  41.       if a[x] > MIN_ELEM then
  42.         r := r + 1;
  43.    getCountP := r;      
  44. end;      
  45. function getCountMIndex( const a: tabl_t ):integer;
  46. var  
  47.   i,y: integer;
  48. begin
  49.     i := 1;
  50.     for y:=2 to N do
  51.       if getCountP(a[y]) > getCountP(a[i]) then
  52.         i := y;
  53.    getCountMIndex := i;    
  54. end;
  55.  
  56.  
  57. var
  58.   a: tabl_t;
  59.   x,y,minR,minD: integer;
  60.  
  61. const ALR_FRIST_ITEM = 1;
  62. const ALR_ABS_MODE = true;
  63.  
  64. begin
  65.   init_2d(a);
  66.  
  67.   printTabl(a);
  68.  
  69.   Writeln('-------------------------------');
  70.  
  71.   minD := getCountP( a[ getCountMIndex(a) ] );
  72.  
  73.   for y:=1 to N do
  74.     if getCountP(a[y]) = minD then begin
  75.       minR := a[y][1] mod 10;  
  76.       if ALR_ABS_MODE then minR := abs(minR);
  77.       writeln(y , ' # ' , minR);
  78.       for x:=ALR_FRIST_ITEM to M do
  79.         if a[y][x] mod 2 = 0 then
  80.           a[y][x] := a[y][x] + minR;
  81.     end;
  82.    
  83.   printTabl(a);
  84.  
  85. end.

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

  1. Переменная N инициализируется значением 5.
  2. Переменная M инициализируется значением N.
  3. Создается тип данных item_t, который представляет целое число.
  4. Создается тип данных line_t, который представляет массив из item_t.
  5. Создается тип данных tabl_t, который представляет массив из line_t.
  6. Определяется процедура printLine, которая выводит элементы массива l построчно.
  7. Определяется процедура printTabl, которая выводит все строки массива t построчно.
  8. Определяется процедура init_2d, которая инициализирует каждую ячейку массива a случайным числом от -100 до 100.
  9. Определяется функция getCountP, которая подсчитывает количество элементов в строке массива a.
  10. Определяется функция getCountMIndex, которая находит индекс строки с минимальным количеством элементов в массиве a.
  11. Инициализируется переменная a.
  12. Выводится таблица массива a с помощью процедур printTabl.
  13. Выводится строка с минимальным количеством элементов и ее индекс.
  14. Если значение переменной ALR_ABS_MODE равно true, то выводится абсолютное значение числа.
  15. Выводится номер строки и само число.
  16. Если значение переменной ALR_ABS_MODE равно true, то выводится абсолютное значение числа.
  17. Выполняется цикл, который увеличивает все четные числа в строке на младшую цифру первого элемента этой строки.
  18. Выводится обновленная таблица массива a с помощью процедур printTabl.

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


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

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

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

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

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

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