Произвести обход матрицы — Pascal(Паскаль)

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.

Leave a Comment

1 + 2 =