21 22 23 24 25 26
20 07 08 09 10 27
19 06 01 02 11 28
18 05 04 03 12 29
17 16 15 14 13 30
uses crt;
const n=5;{???????????? ??????}
var a:array[1..n+1,1..n+1]of integer;{???????}
i,j,l,p:integer;{???????? ??? ????????? ?? ???????}
x,y:integer; {?????????? ??????}
num:integer; {????? ? ?????? (??? n=4 ?? 1?? 16)}
add:integer; {????? ??????? ?? ???????? ?? ????????}
dir:integer; {??? =+1 ??? ???????? ?????? ? ????,
=-1 ??? ???????? ????? ? ?????}
begin
clrscr;
x:=3;
y:=3;
num:=1;
Add:=n;
dir:=round(1/2)+1; { dir:=(round(l/2)+1)*(-1)}
a[3,3]:=num; l:=1;
while (l<10) do
begin
i:=0;
p:=(trunc(l/2)+1);
while (i<p) do {??????}
begin
y:=y+dir;
num:=num+1;
a[y,x]:=num;
i:=i+1;
end;
i:=0;
add:=add-1;
l:=l+1;
while (i<(round(l/2))) do {?????}
begin
x:=x+dir;
num:=num+1;
a[y,x]:=num;
i:=i+1;
end;
dir:=dir*(-1); {?????? ???? ? ???? ????? ????? ? ?????}
l:=l+1;
end;
for i:=1 to n do
begin
for j:=1 to n do
write(a[j, i]:4);
writeln;
end;
readln
end.