uses crt;
const nmax=20;//макс. размер
type mas=array[1..2*nmax-1] of integer;//вектор
matr=array[1..nmax] of mas;//массив векторов
var n,i,j,l,k,p:integer;
a,b:matr;
begin
clrscr;
randomize;
repeat
write('Размер матрицы до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Исходная матрица:');
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=random(40)+10;
write(a[i,j]:4);
end;
writeln;
end;
For l:=1 to 2*n-1 do//2*n-1 количество диагоналей, включая побочную
begin
if l<=n then//выше побочной и она
begin
k:=0;//длина вектора
for i:=1 to l do
for j:=1 to l do
if j=l-i+1 then//если на диагонали
begin
k:=k+1;//считаем
b[l][k]:=a[i,j];//пишем в вектор
end;
end
else if l>n then//тоже ниже диагонали
begin
k:=0;
for i:=l-n+1 to n do
for j:=l-n+1 to n do
if j=l-i+1 then
begin
k:=k+1;
b[l][k]:=a[i,j];
end;
end;
write('Вектор диагонали ',l,':');
for p:=1 to k do write(b[l][p]:4);
writeln;
end;
readln
end.