PascalABC.NET 3.3.5, сборка 1636 от 10.03.2018
Внимание! Если программа не работает, обновите версию!
begin
var n:=ReadInteger('Количество строк/столбцов в матрице:');
Writeln('*** Исходная матрица ***');
var a:=MatrRandom(n,n,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
var imax:=a.Rows.Select(r->r.ToArray.IndexMax).ToArray;
for var i:=0 to n-1 do
Swap(a[i,i],a[i,imax[i]]);
Writeln('*** Результат ***'); a.Println(4)
end.