Упорядочить элементы матрицы по правилу (процедуры и функции) - PascalABC.NET

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

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

Пусть задана вещественная матрица A (n x n). Упорядочить элементы матрицы: a) по неубыванию значений максимальных элементов в строках; b) по неубыванию сумм элементов строк.

Решение задачи: «Упорядочить элементы матрицы по правилу (процедуры и функции)»

textual
Листинг программы
  1. var a:array[,] of real;
  2.     n,i,j,l:byte;
  3.     sm,mx,b:real;
  4. begin
  5. randomize;
  6. write('Размер матрицы n=');
  7. readln(n);
  8. setlength(a,n,n+2);
  9. //вычисление сумм и макс. в строках и запись их в дополнительные столбцы
  10. for i:=0 to n-1 do
  11.  begin
  12.   sm:=0;
  13.   for j:=0 to n-1 do
  14.    begin
  15.     a[i,j]:=10*random;
  16.     sm:=sm+a[i,j];
  17.     if j=0 then mx:=a[i,0]
  18.     else if a[i,j]>mx then mx:=a[i,j];
  19.    end;
  20.   a[i,n]:=mx;
  21.   a[i,n+1]:=sm;
  22.  end;
  23. writeln('Исходный массив:');
  24. writeln('Макс':n*5+8,'  Сумма');
  25. for i:=0 to n-1 do
  26.  begin
  27.   for j:=0 to n+1 do
  28.   if j=n then write(a[i,j]:8:1)
  29.   else if j=n+1 then write(a[i,j]:6:1)
  30.   else write(a[i,j]:5:1);
  31.   writeln;
  32.  end;
  33. //перестановка строк по неубыванию макс. элементов(по предпоследнему столбцу)
  34. for i:=0 to n-2 do
  35. for l:=i+1 to n-1 do
  36. if a[i,n]>a[l,n] then
  37. for j:=0 to n+1 do
  38.  begin
  39.   b:=a[i,j];
  40.   a[i,j]:=a[l,j];
  41.   a[l,j]:=b;
  42.  end;
  43. writeln('Строки по неубыванию макс. элементов:');
  44. writeln('Макс':n*5+8,'  Сумма');
  45. for i:=0 to n-1 do
  46.  begin
  47.   for j:=0 to n+1 do
  48.   if j=n then write(a[i,j]:8:1)
  49.   else if j=n+1 then write(a[i,j]:6:1)
  50.   else write(a[i,j]:5:1);
  51.   writeln;
  52.  end;
  53. //перестановка строк по неубыванию сумм(по последнему столбцу)
  54. for i:=0 to n-2 do
  55. for l:=i+1 to n-1 do
  56. if a[i,n+1]>a[l,n+1] then
  57. for j:=0 to n+1 do
  58.  begin
  59.   b:=a[i,j];
  60.   a[i,j]:=a[l,j];
  61.   a[l,j]:=b;
  62.  end;
  63. writeln('Строки по неубыванию сумм:');
  64. writeln('Макс':n*5+8,'  Сумма');
  65. for i:=0 to n-1 do
  66.  begin
  67.   for j:=0 to n+1 do
  68.   if j=n then write(a[i,j]:8:1)
  69.   else if j=n+1 then write(a[i,j]:6:1)
  70.   else write(a[i,j]:5:1);
  71.   writeln;
  72.  end;
  73. end.

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

  1. Объявлены переменные: a (массив), n (размер матрицы), i, j, l (количество строк, столбцов), sm, mx, b (сумма, максимальное значение, буфер).
  2. Задается размер матрицы.
  3. Вычисляются суммы и максимальные значения в строках, записываются в дополнительные столбцы.
  4. Выводится исходный массив.
  5. Строки переупорядочиваются по неубыванию максимального значения элементов (по предпоследнему столбцу).
  6. Выводится массив с переставленными строками.
  7. Строки переупорядочиваются по неубыванию суммы элементов (по последнему столбцу).
  8. Выводится массив с переставленными строками.

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


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

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

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

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

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

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