Определить максимальный и второй по величине элементы в каждом столбце матрицы - Turbo Pascal

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

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

Программа должна определять максимальный и второй по величине элементы в каждом столбце массива A(3,5) и менять их местами, но правильно меняется только первый столбец.
Листинг программы
  1. uses crt;
  2. const
  3. n=3;
  4. m=5;
  5. var
  6. a:array[1..n,1..m] of integer;
  7. i,j,k,maxi,mini:integer;
  8. procedure print(s:string);
  9. var
  10. i,j:integer;
  11. begin
  12. writeln(s);
  13. for i:=1 to n do begin for j:=1 to m do write(a[i,j]:5);
  14. writeln;
  15. end;
  16. end;
  17. begin
  18. randomize;
  19. for i:=1 to n do for j:=1 to m do a[i,j]:=random(100);
  20. print ('исходная матрица:*');
  21. for j:=1 to m do begin
  22. mini:=1;
  23. maxi:=1;
  24. for i:=1 to n do begin
  25. if a[mini,j]>a[i,j] then mini:=i;
  26. if a[maxi,j]<a[i,j] then maxi:=i;
  27. end;
  28. k:=a[mini,j];
  29. a[mini,j]:=a[maxi,j];
  30. a[maxi,j]:=k;
  31. end;
  32. print ('полученная матрица:');
  33. end.

Решение задачи: «Определить максимальный и второй по величине элементы в каждом столбце матрицы»

textual
Листинг программы
  1. uses crt;
  2. const
  3.   n = 3;
  4.   m = 5;
  5.  
  6. var
  7.   a: array[1..n, 1..m] of integer;
  8.   i, j, k, maxiRow, miniRow, maxiCol, miniCol: integer;
  9.  
  10. procedure print(s: string);
  11. var
  12.   i, j: integer;
  13. begin
  14.   writeln(s);
  15.   for i := 1 to n do
  16.   begin
  17.     for j := 1 to m do write(a[i, j]:5);
  18.     writeln;
  19.   end;
  20. end;
  21.  
  22. begin
  23.   randomize;
  24.   for i := 1 to n do for j := 1 to m do a[i, j] := random(100);
  25.   print('исходная матрица:*');
  26.  
  27.   miniRow := 1;
  28.   miniCol := 1;
  29.   maxiRow := 1;
  30.   maxiCol := 1;
  31.   for i := 1 to n do
  32.   begin
  33.     for j := 1 to m do
  34.     begin
  35.       if a[miniRow, miniCol] > a[i, j] then
  36.       begin
  37.         miniRow := i;miniCol := j;
  38.       end;
  39.       if a[maxiRow, maxiCol] < a[i, j] then
  40.       begin
  41.         maxiRow := i;maxiCol := j;
  42.       end;
  43.     end;    
  44.   end;
  45.  
  46.   for i := 1 to n do
  47.   begin
  48.     k := a[i, miniCol];
  49.     a[i, miniCol] := a[i, maxiCol];
  50.     a[i, maxiCol] := k;
  51.   end;
  52.   print('полученная матрица:');
  53. end.

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

В данном коде используется язык программирования Turbo Pascal. Он предназначен для работы с матрицами и определения максимальных и вторых по величине элементов в каждом столбце. Переменные:

  • n - количество строк матрицы (в данном случае равно 3);
  • m - количество столбцов матрицы (в данном случае равно 5);
  • a - матрица, в которой будут находиться числа от 0 до 99;
  • i, j, k - переменные для перебора строк и столбцов матрицы;
  • maxiRow, miniRow, maxiCol, miniCol - переменные для хранения текущих максимумов и минимумов в каждой строке и столбце соответственно;
  • print - функция для вывода содержимого матрицы на экран. Код начинается с инициализации переменной a случайными числами от 0 до 99. Затем выводится исходная матрица. Далее происходит поиск минимального и максимального элемента в каждой строке и столбце. Для этого используются циклы for и переменной k присваиваются значения из a. После этого выводится полученная матрица, в которой найденные максимальные элементы заменены на их исходные значения. В конце кода выводится сообщение с помощью функции print, содержащее исходную матрицу.

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


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

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

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

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

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

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