uses crt;
const nmax=20;//максимальный размер матрицы, больше и не нужно
var m:array[1..nmax,1..nmax]of integer;
n,i,j,c,k,l,p:byte;
min:integer;
begin
clrscr;
randomize;
write('Введите размерность матрицы до ',nmax,' n= ');
readln(n);
writeln('Матрица:');
for i:=1 to n do
begin
for j:=1 to n do
begin
m[i,j]:=random(20)+1;
write(m[i,j]:4);
end;
writeln;
end;
for l:=1 to 2*n-1 do //по количеству диагоналей, включая главную
begin
if l<=n then // ниже диагонали, начиная с a[1,n], если нужны только параллельные
//без главной, то написать if l<n
begin
min:=m[n-l+1,1]; //примем за мин первый элемент в диагонали
for i:=n-l+1 to n do //начало и конец диагонали
if m[i,i-n+l]<min then min:=m[i,i-n+l]; //сама диагональ
writeln('Минимальный на диагонали ',l,'=',min:4);
end
else if l>n then //то же самое выше диагонали
begin
min:=m[2*n-l,n];
for i:=1 to 2*n-l do
if m[i,i-n+l]<min then min:=m[i,i-n+l];
writeln('Минимальный на диагонали ',l,'=',min:4);
end;
end;
end.
Следующий вариант
uses crt;
const nmax=20;{максимальный размер матрицы, больше и не нужно}
type matr=array[1..nmax,1..nmax]of integer;
procedure Matrix(var m:matr;var n:byte);
var i,j:byte;
begin
write('Введите размерность матрицы до ',nmax,' n= ');
readln(n);
writeln('Матрица:');
for i:=1 to n do
begin
for j:=1 to n do
begin
m[i,j]:=random(20)+1;
write(m[i,j]:4);
end;
writeln;
end;
writeln;
end;
procedure MinDg(m:matr;n:byte);
var i,j,c,k,l,p:byte;
min:integer;
begin
for l:=1 to 2*n-1 do {по количеству диагоналей, включая главную}
begin
if l<=n then {ниже диагонали, начиная с a[1,n], если нужны только параллельные
без главной, то написать if l<n}
begin
min:=m[n-l+1,1]; {примем за мин первый элемент в диагонали}
for i:=n-l+1 to n do {начало и конец диагонали}
if m[i,i-n+l]<min then min:=m[i,i-n+l]; {сама диагональ}
writeln('Минимальный на диагонали ',l:2,'=',min:4);
end
else if l>n then {то же самое выше диагонали}
begin
min:=m[2*n-l,n];
for i:=1 to 2*n-l do
if m[i,i-n+l]<min then min:=m[i,i-n+l];
writeln('Минимальный на диагонали ',l:2,'=',min:4);
end;
end;
end;
var a:matr;
n:byte;
begin
clrscr;
randomize;
Matrix(a,n);
MinDg(a,n);
readln
end.