Поменять местами строки матрицы, содержащие наибольший и наименьший элементы - Pascal

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

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

Всем привет. Помогите пожалуйста с задачей. В данной вещественной матрице размером nxm поменяйте местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей элемент с наименьшим значением. Предполагается, что эти элементы единственные. Преподаватель сказал делать по примеру, но лично я ничего не понимаю в этом.
Листинг программы
  1. Program SORT (input, output);
  2. Type
  3. Matrix = Array [1..10, 1..10] of Real;
  4. Var
  5. i, j, K, L : Integer; {параметры циклов и индексы}
  6. N : Integer; {порядок матрицы}
  7. A : Matrix; {исходная матрица}
  8. S : Array [1..10] of Real; {суммы элементов строк}
  9. R : Real; {промежуточная переменная}
  10. Begin
  11. Repeat
  12. Writeln ('Введите порядок матрицы N, N <= 10');
  13. ReadLn ( N )
  14. Until N in [2..10];
  15. Writeln ( 'Введите матрицу по строкам');
  16. for i := 1 to N do
  17. for j := 1 to N do
  18. Read ( A[i,j] );
  19. {Вывод исходной матрицы}
  20. Writeln ('Исходная матрица A');
  21. for i := 1 to N do
  22. Begin
  23. for j := 1 to N do
  24. Write ( A[i,j] :8:1 );
  25. Writeln
  26. end;
  27. {подсчет сумм элементов строк}
  28. for i := 1 to N do
  29. Begin
  30. S[i] := 0;
  31. for j := 1 to N do
  32. S[i] := S[i] + A[i,j]
  33. end;
  34. {сравнение сумм и перестановка строк}
  35. for i := 1 to N-1 do
  36. Begin
  37. K := 1; L := N - i + 1;
  38. for j := 2 to L do
  39. if S[ j ] > S[ K ]then
  40. K:= j;
  41. {замена суммы переставляемой строки}
  42. S[ K] := S[ L ];
  43. {перестановка строк через буферную переменную}
  44. for j := 1 to N do
  45. Begin
  46. R := A[K,j];
  47. A[K,j] := A[L,j];
  48. A[L,j] := R
  49. end
  50. end;
  51. {Вывод результирующей матрицы}
  52. Writeln ('Отсортированная матрица');
  53. for i := 1 to N do
  54. Begin
  55. for j := 1 to N do
  56. Write ( A[i,j] :8:1 );
  57. Writeln
  58. End
  59. End.

Решение задачи: «Поменять местами строки матрицы, содержащие наибольший и наименьший элементы»

textual
Листинг программы
  1. const mm=10; nm=10;
  2. var
  3.   a: array [1..mm,1..nm] of Real;
  4.   mx, mn, t: Real;
  5.   m, n, i, j, imx, imn: Integer;
  6. begin
  7.   Randomize;
  8.   repeat Write('M [1..',mm,'] N [1..',nm,']: '); ReadLn(m,n);
  9.   until (m in [1..mm]) and (n in [1..nm]);
  10.   for i:=1 to m do for j:=1 to n do a[i,j]:=Random*100;
  11.   WriteLn('A =');
  12.   for i:=1 to m do begin
  13.     for j:=1 to n do Write(a[i,j]:8:2); WriteLn;
  14.   end;
  15.   imn:=1; imn:=1; mn:=a[1,1]; mx:=a[1,1];
  16.   for i:=1 to m do
  17.     for j:=1 to n do begin
  18.       if mn>a[i,j] then begin imn:=i; mn:=a[i,j]; end;
  19.       if mx<a[i,j] then begin imx:=i; mx:=a[i,j]; end;
  20.     end;
  21.   WriteLn('Строки min: ',imn,', max: ',imx);
  22.   if imn<>imx then
  23.     for j:=1 to n do begin
  24.       t:=a[imn,j]; a[imn,j]:=a[imx,j]; a[imx,j]:=t;
  25.     end;
  26.   WriteLn('A''=');
  27.   for i:=1 to m do begin
  28.     for j:=1 to n do Write(a[i,j]:8:2); WriteLn;
  29.   end;
  30. end.

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

  1. Создаются две переменные mm и nm, которые представляют собой длину матрицы a.
  2. Создается переменная a, которая представляет собой матрицу размером mm x nm.
  3. Создаются три переменные m, n, i и j, которые будут использоваться для перемещения строк матрицы.
  4. Задаются начальные значения для переменных mn и mx, которые будут использоваться для поиска наибольшего и наименьшего элементов в матрице.
  5. Заполняется матрица a случайными числами.
  6. Выводится матрица a с помощью цикла for.
  7. Внутри цикла for происходит сравнение элементов матрицы и, если текущий элемент меньше следующего, то обновляется значение переменной mn и mx.
  8. Если mn и mx не равны, то происходит цикл for, который меняет местами строки матрицы, содержащие наибольший и наименьший элементы.
  9. Выводится новая матрица a с помощью цикла for.
  10. Завершается программа.

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


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

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

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

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

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

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