Изящно и непонятно.
// PascalABC.NET 3.4, сборка 1767 от 27.08.2018
begin
var matr := MatrRandom(7, 7, 0, 100); matr.Println; // // объявление матрицы со случайными значениями в диапазоне(0, 100) и её печать
Swap(matr[0, matr.Row(0).IndexMin], matr[2, matr.Row(2).IndexMin]); // меняем местами мин. элементы первой и третьей строк.
var m := matr.ElementsWithIndexes.Where(t -> t[1] = t[2]).MaxBy(t -> t[0]); // получение максимального элемента с его позицией в матрице главной диагонали.
var s := matr.ElementsWithIndexes.Where(t -> (t[1], t[2]) in Range(0, 6).Select((t, i)-> (t, abs(i - 6)))).MaxBy(t -> t[0]); // и побочной
Println; // отступ
Swap(matr[m[1], m[2]], matr[s[1], s[2]]); // меняем местами макс. элементы диагоналей
matr.Println; // печать результата
end.
Пример вывода в приложении: