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

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

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

Не пойму что не так сделал. Программа выводит не правильный результат. Прошу помочь с задачей. Ввести матрицу А NxM, вывести ее. В строках, где число четных элементов превышает число нечетных, нечетные элементы заменить максимальным элементом всей матрицы.
Листинг программы
  1. program abc2;
  2. var a:array[1..5,1..4]of integer;
  3. n,l,m,i,j,max,k,s:integer;
  4. begin
  5. writeln('введите сначала n, потом m');
  6. readln(n,m);
  7. max:=-999;
  8. for i:=1 to n do
  9. for j:=1 to m do
  10. begin
  11. write('a[i,j]=');
  12. readln(a[i,j]);
  13. end;
  14. for i:=1 to n do
  15. begin
  16. for j:=1 to m do
  17. write(a[i,j]:4);
  18. writeln;
  19. end;
  20. for i:=1 to n do
  21. for j:=1 to m do
  22. begin
  23. if a[i,j]>max then
  24. max:=a[i,j];
  25. end;
  26. for i:=1 to n do
  27. begin
  28. k:=0;
  29. s:=0;
  30. for j:=1 to m do
  31. if a[i,j] mod 2=0 then
  32. k:=k+1;
  33. if a[i,j] mod 2=1 then
  34. s:=s+1;
  35. if k>s then
  36. begin
  37. for l:= 1 to m do
  38. if( a[i,l]mod 2=1) then a[i,l]:= max;
  39. end;
  40. end;
  41. for i:=1 to n do
  42. begin
  43. for j:=1 to m do
  44. write(a[i,j]:4);
  45. writeln;
  46. end;
  47. end.

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

textual
Листинг программы
  1. for i:=1 to n do for j:=1 to m do
  2.   if a[i,j]>max then max:=a[i,j];
  3. for i:=1 to n do begin
  4.   k:=0;
  5.   for j:=1 to m do if Odd(a[i,j]) then Inc(k);
  6.   if m-k>k then
  7.     for j:=1 to m do if Odd(a[i,j]) then a[i,j]:=max;
  8. end;
  9. for i:=1 to n do begin
  10.   for j:=1 to m do Write(' ',a[i,j]:3); WriteLn;
  11. end;
  12. end.

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

  1. В первой строке кода используется цикл for, который выполняется от 1 до n (количество строк) и от 1 до m (количество столбцов).
  2. Внутри первого цикла if проверяется условие a[i,j] > max. Если это условие истинно, то значение max присваивается значению a[i,j]. Это происходит для каждой строки и каждого столбца.
  3. Во втором цикле for также используется цикл for, который выполняется от 1 до m (количество столбцов).
  4. Внутри второго цикла if проверяется условие Odd(a[i,j]). Если это условие истинно, то значение переменной k увеличивается на единицу.
  5. Затем проверяется условие m-k > k. Если это условие истинно, то для каждой строки и каждого столбца значение a[i,j] присваивается максимальному значению max.
  6. В конце кода используется третий цикл for, который выполняется от 1 до n (количество строк).
  7. Внутри третьего цикла Write выводится пробел, а затем выводится значение каждой ячейки матрицы a[i,j] (используется формат с разделителем 3 пробелов).
  8. Код завершается вызовом функции WriteLn, которая выводит новую строку.

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


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

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

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

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

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

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