Изящно и непонятно.
// 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.
Пример вывода в приложении:
var i,f,k,j:integer;
s:string;
a:array[1..n] of string;
begin
k:=0; j:=0;
writeln('введите количество строк в массиве');
readln(f);writeln('заполните массив');
for i:=1 to f do
readln(a[i]);
for i:=1 to f do
begin
j:=pos('d',a[i]);
s:=a[i];
while (pos('a',s)<j) and (pos('a',s)<>0) do
begin
delete(s,pos('a',s),1); j:=j-1;
end;
if pos('a',s)>j then k:=k+1;
end;
if k=0 then writeln('таких строк нет') else writeln('такие строки есть');
end.