В заданных строках матрицы все чётные элементы увеличить на младшую цифру первого элемента строки - Pascal
Формулировка задачи:
Дана целочисленная матрица размером NxN. В строках,содержащих наибольшее количество положительных элементов , все четные элементы увеличить на младшую цифру первого элемента этой строки
Решение задачи: «В заданных строках матрицы все чётные элементы увеличить на младшую цифру первого элемента строки»
textual
Листинг программы
- const N = 5;
- const M = N;
- const MIN_ELEM = 0;
- type item_t = integer;
- type line_t = array[1..M] of item_t;
- type tabl_t = array[1..N] of line_t;
- procedure printLine( const l: line_t );
- var
- i: integer;
- begin
- for i:= 1 to M do
- write(l[i] :5);
- writeln;
- end;
- procedure printTabl( const t: tabl_t );
- var
- i: integer;
- begin
- for i:= 1 to N do
- printLine(t[i]);
- end;
- procedure init_2d( var a: tabl_t );
- var
- x,y: integer;
- begin
- for y:=1 to N do
- for x:=1 to M do
- a[y][x] := random(-100 , 100);
- end;
- function getCountP( const a: line_t ):integer;
- var
- r,x: integer;
- begin
- r := 0;
- for x:=1 to M do
- if a[x] > MIN_ELEM then
- r := r + 1;
- getCountP := r;
- end;
- function getCountMIndex( const a: tabl_t ):integer;
- var
- i,y: integer;
- begin
- i := 1;
- for y:=2 to N do
- if getCountP(a[y]) > getCountP(a[i]) then
- i := y;
- getCountMIndex := i;
- end;
- var
- a: tabl_t;
- x,y,minR,minD: integer;
- const ALR_FRIST_ITEM = 1;
- const ALR_ABS_MODE = true;
- begin
- init_2d(a);
- printTabl(a);
- Writeln('-------------------------------');
- minD := getCountP( a[ getCountMIndex(a) ] );
- for y:=1 to N do
- if getCountP(a[y]) = minD then begin
- minR := a[y][1] mod 10;
- if ALR_ABS_MODE then minR := abs(minR);
- writeln(y , ' # ' , minR);
- for x:=ALR_FRIST_ITEM to M do
- if a[y][x] mod 2 = 0 then
- a[y][x] := a[y][x] + minR;
- end;
- printTabl(a);
- end.
Объяснение кода листинга программы
- Переменная
N
инициализируется значением 5. - Переменная
M
инициализируется значениемN
. - Создается тип данных
item_t
, который представляет целое число. - Создается тип данных
line_t
, который представляет массив изitem_t
. - Создается тип данных
tabl_t
, который представляет массив изline_t
. - Определяется процедура
printLine
, которая выводит элементы массиваl
построчно. - Определяется процедура
printTabl
, которая выводит все строки массиваt
построчно. - Определяется процедура
init_2d
, которая инициализирует каждую ячейку массиваa
случайным числом от -100 до 100. - Определяется функция
getCountP
, которая подсчитывает количество элементов в строке массиваa
. - Определяется функция
getCountMIndex
, которая находит индекс строки с минимальным количеством элементов в массивеa
. - Инициализируется переменная
a
. - Выводится таблица массива
a
с помощью процедурprintTabl
. - Выводится строка с минимальным количеством элементов и ее индекс.
- Если значение переменной
ALR_ABS_MODE
равноtrue
, то выводится абсолютное значение числа. - Выводится номер строки и само число.
- Если значение переменной
ALR_ABS_MODE
равноtrue
, то выводится абсолютное значение числа. - Выполняется цикл, который увеличивает все четные числа в строке на младшую цифру первого элемента этой строки.
- Выводится обновленная таблица массива
a
с помощью процедурprintTabl
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д