Построить спираль в квадратной матрице — Pascal(Паскаль)

uses crt;
var a:array[1..20,1..20]of integer;
    n,i,j:integer;
    x,y,num,add,dir:integer;
begin
clrscr;
write('n=');readln(n);
x:=0;{выход слева в первой строке}
y:=1;{с поля [1,2]}
num:=0;
Add:=n;{максимальный путь в строке и столбце}
dir:=1;{направление вправо и вниз}
while (add<>0) do
begin
  i:=0;
  while (i<>add) do
    begin
    x:=x+dir;{вправо}
    a[y,x]:=num;
    num:=num+1;
    i:=i+1;
    end;
  i:=0;
  add:=add-1;
  while (i<>add) do
    begin
    y:=y+dir;{вниз}
    a[y,x]:=num;
    num:=num+1;
    i:=i+1;
    end;
  dir:=dir*(-1);{меняем направление (влево и вверх)}
end;
a[1,1]:=n*n;{первый элемент}
for i:=1 to n do
   begin
     for j:=1 to n do
     write(a[i,j]:4);
     writeln;
   end;
readln
end.

Leave a Comment

59 − 52 =