// PascalABC.NET 3.2, сборка 1431 от 28.04.2017
// Внимание! Если программа не работает, обновите версию!
procedure SortFirstColAsc(p:array[,] of integer);
begin
var c:=p.Col(0).OrderBy(x->x).ToArray;
for var i:=0 to p.RowCount-1 do p[i,0]:=c[i]
end;
procedure SortLastColDesc(p:array[,] of integer);
begin
var j:=p.ColCount-1;
var c:=p.Col(j).OrderByDescending(x->x).ToArray;
for var i:=0 to p.RowCount-1 do p[i,j]:=c[i]
end;
begin
var n:=ReadInteger('Количество строк в матрице:');
var m:=ReadInteger('Количество столбцов в матрице:');
Writeln('*** Исходная матрица [',n,',',m,'] ***');
var a:=MatrRandom(n,m,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
Writeln('Сортировка по первой колонке');
SortFirstColAsc(a);
a.Println(4); Writeln(4*a.ColCount*'-');
Writeln('Сортировка по последней колонке');
SortLastColDesc(a);
a.Println(4)
end.
Пример
Количество строк в матрице: 4
Количество столбцов в матрице: 7
*** Исходная матрица [4,7] ***
-12 60 18 -46 10 4 26
32 -73 -2 -88 -70 -46 -17
-18 94 -41 9 -11 32 94
32 -18 1 -71 -96 -77 46
----------------------------
Сортировка по первой колонке
-18 60 18 -46 10 4 26
-12 -73 -2 -88 -70 -46 -17
32 94 -41 9 -11 32 94
32 -18 1 -71 -96 -77 46
----------------------------
Сортировка по последней колонке
-18 60 18 -46 10 4 94
-12 -73 -2 -88 -70 -46 46
32 94 -41 9 -11 32 26
32 -18 1 -71 -96 -77 -17