Упорядочить (переставить) строки матрицы по неубыванию значений наименьших элементов рядков - Free Pascal
Формулировка задачи:
дана действительная матрица размером n*m. упорядочить (переставить) рядки матрицы по неубыванию значений наименьших элементов рядков.
(сортировка обменом)
Решение задачи: «Упорядочить (переставить) строки матрицы по неубыванию значений наименьших элементов рядков»
textual
Листинг программы
const
nmax=14; W=5; D=2;
var
a: array [1..nmax+1,1..nmax+1] of Real;
n, m, i, j, mm: Integer;
begin
Randomize;
repeat
Write('Введите N [2..',nmax,'], M [2..',nmax,']: '); ReadLn(n,m);
until (n in [2..nmax]) and (m in [2..nmax]);
WriteLn('Исходная матрица:');
for i:=1 to n do begin
mm:=1;
for j:=1 to m do begin
a[i,j]:=10*random; Write(a[i,j]:W:D);
if a[i,j]<a[i,mm] then mm:=j;
end;
a[i,m+1]:=a[i,mm]; WriteLn('|',a[i,m+1]:W:D);
end;
{ сортировка выбором по неубыванию наименьших элементов строк }
for i:=1 to n-1 do begin { от первой строки до предпоследней }
mm:=i;
for j:=i+1 to n do
if a[j,m+1]<a[mm,m+1] then mm:=j; { ищем минимальный }
a[n+1]:=a[i]; a[i]:=a[mm]; a[mm]:=a[n+1]; { меняем с текущим }
end;
Writeln('Строки по неубыванию наименьших элементов строк:');
for i:=1 to n do begin
for j:=1 to m do Write(a[i,j]:W:D); WriteLn('|',a[i,m+1]:W:D);
end;
Write('Нажмите Enter...'); ReadLn;
end.
Объяснение кода листинга программы
В этом коде:
- Задаются константы
nmax,WиD, которые определяют размерность матрицы и формат вывода чисел. - Создается массив
aразмеромnmax+1наnmax+1, который будет хранить значения матрицы. - Пользователю предлагается ввести значения
nиm, которые определяют количество строк и столбцов матрицы соответственно. - В цикле выводится исходная матрица, заполненная случайными числами.
- Запускается цикл сортировки выбором по неубыванию наименьших элементов строк.
- Выводится отсортированная матрица.
- Пользователю предлагается нажать Enter для выхода из программы.