В строках, где число четных элементов превышает число нечетных, нечетные элементы заменить максимумом матрицы - Turbo Pascal
Формулировка задачи:
Не пойму что не так сделал. Программа выводит не правильный результат. Прошу помочь с задачей.
Ввести матрицу А NxM, вывести ее. В строках, где число четных элементов превышает число нечетных, нечетные элементы заменить максимальным элементом всей матрицы.
Решение задачи: «В строках, где число четных элементов превышает число нечетных, нечетные элементы заменить максимумом матрицы»
textual
Листинг программы
for i:=1 to n do for j:=1 to m do
if a[i,j]>max then max:=a[i,j];
for i:=1 to n do begin
k:=0;
for j:=1 to m do if Odd(a[i,j]) then Inc(k);
if m-k>k then
for j:=1 to m do if Odd(a[i,j]) then a[i,j]:=max;
end;
for i:=1 to n do begin
for j:=1 to m do Write(' ',a[i,j]:3); WriteLn;
end;
end.
Объяснение кода листинга программы
- В первой строке кода используется цикл
for, который выполняется от 1 доn(количество строк) и от 1 доm(количество столбцов). - Внутри первого цикла
ifпроверяется условиеa[i,j] > max. Если это условие истинно, то значениеmaxприсваивается значениюa[i,j]. Это происходит для каждой строки и каждого столбца. - Во втором цикле
forтакже используется циклfor, который выполняется от 1 доm(количество столбцов). - Внутри второго цикла
ifпроверяется условиеOdd(a[i,j]). Если это условие истинно, то значение переменнойkувеличивается на единицу. - Затем проверяется условие
m-k > k. Если это условие истинно, то для каждой строки и каждого столбца значениеa[i,j]присваивается максимальному значениюmax. - В конце кода используется третий цикл
for, который выполняется от 1 доn(количество строк). - Внутри третьего цикла
Writeвыводится пробел, а затем выводится значение каждой ячейки матрицыa[i,j](используется формат с разделителем 3 пробелов). - Код завершается вызовом функции
WriteLn, которая выводит новую строку.