Другие языки программирования и технологии

Задача на Паскале

Нужно сделать обход вот такой матрицы.
const
N = 5;

var
A: array[1..N, 1..N] of integer;
i, j, q, size: integer;

begin
i := 1; j := N;
A[i][j] := 1;
q := 2; size := 3 * N;
while q <= size do
begin
if (j > 1) then
begin
dec(j);
A[i][j] := q;
inc(q);
end;

while (i < N) and (j < N) do
begin
inc(i);
inc(j);
A[i][j] := q;
inc(q);
end;

if i < N then
begin
inc(i);
A[i][j] := q;
inc(q);
end;

while (i > 1) and (j > 1) do
begin
dec(i);
dec(j);
A[i][j] := q;
inc(q);
end;
end;

size := N * N;
while q <= size do
begin
if((i < N) and (q <= size)) then
begin
inc(i);
A[i][j] := q;
inc(q);
end;

while((i < N) and (j < N) and (q <= size)) do
begin
inc(i);
inc(j);
A[i][j] := q;
inc(q);
end;

if((j > 1) and (q <= size)) then
begin
dec(j);
A[i][j] := q;
inc(q);
end;

while((i > 1) and (j > 1) and (q <= size)) do
begin
dec(i);
dec(j);
A[i][j] := q;
inc(q);
end;
end;

for i := 1 to N do
begin
for j := 1 to N do
write(A[i, j]:3);
writeln;
end; writeln;

write('Press Enter key for continue...');
readln;
end.
МБ
Максим Барабанкин
11 953
Лучший ответ
Ринат Махмудов спасибо большое