Чет про программирование / практика / 1) Обход матрицы по спирали
.docxОбход матрицы по спирали (n^2)
const
n = 5;
var
a: array[1..n, 1..n] of integer;
i, j, dx, dx1, dy, dy1, x, y, dir: integer;
procedure inc_dir; inline;
begin
case dir of
1: inc(dy);
2: inc(dx);
3: inc(dy1);
4: inc(dx1);
end;
if dir < 4 then inc(dir) else
if dir = 4 then dir := 1;
end;
begin
for i := 1 to n do begin
for j := 1 to n do begin
a[i, j] := i*10 + j;
write(a[i, j], ' ');
end;
writeln;
end; // вывод матрицы
dir := 1;
x := 1;
y := 1;
dx1 := 1;
for i := 1 to n*n do begin
writeln(a[x, y]);
case dir of
1:
begin
inc(y);
if y = n-dy then inc_dir;
end;
2:
begin
inc(x);
if x = n-dx then inc_dir;
end;
3:
begin
dec(y);
if y = 1+dy1 then inc_dir;
end;
4:
begin
dec(x);
if x = 1+dx1 then inc_dir;
end;
end;
end;
readln;
end.