Я решал похожую задачу, вот:
Код
program matrix;
uses crt;
var i,j,nom,dio,dios:byte;
zad:integer;
mat:array [1..25,1..25] of byte;
begin
clrscr;
textcolor(white);
writeln('vvedite zadergku vivoda matrizi');
readln(zad);
clrscr;
randomize;
textcolor(green);
for i:=1 to 20 do
begin
for j:=1 to 20 do
begin
mat[i,j]:=random(10);
end;
end;
dios:=0;
for i:=20 downto 1 do
begin
dios:=dios+1;
dio:=dios;
if (i mod 2)<>0 then
begin
dio:=20;
for j:=i downto 1 do
begin
gotoxy(j,dio);
write(mat[dio,j]);
delay(zad);
dio:=dio-1;
end;
end
else
for j:=1 to i do
begin
gotoxy(j,dio);
write(mat[dio,j]);
delay(zad);
dio:=dio+1;
end;
end;
{} dios:=0;
for i:=20 downto 1 do
begin
dios:=dios+1;
dio:=dios;
if (i mod 2)=0 then
begin
dio:=20;
for j:=i downto 1 do
begin
gotoxy(dio,j);
write(mat[j,dio]);
delay(zad);
dio:=dio-1;
end;
end
else
for j:=1 to i do
begin
gotoxy(dio,j);
write(mat[j,dio]);
delay(zad);
dio:=dio+1;
end;
end;
end.