Задача: Расположить числа в матрице по спирали. Есть решение, но на зачёте объяснить не смогу, помогите разобраться!
Program Matrix;
uses crt;
Const n=7;
type flag=(Left,Right,Up,Down);
var fl: flag;
y,u,x,i,j:integer;
mas:array [1..n+2] of array[1..n+2] of integer;
Procedure Zapolnenie;
Begin
For j:=1 to n+2 do
For i:=1 to n+2 do
mas[i][j]:=-1;
For j:=2 to n+1 do
For i:=2 to n+1 do
mas[i][j]:=0;
End;
Procedure Vivod;
Begin
For j:=2 to n+1 do begin
For i:=2 to n+1 do
Write(mas[i][j],' | ');
WriteLn('');
End;
End;
Procedure Move;
Begin
Case fl of
Left: while mas[i-1][j]=0 do begin mas[i][j]:=u;i:=i-1;u:=u+1;End;
Up:while mas[i][j-1]=0 do begin mas[i][j]:=u;j:=j-1;u:=u+1;End;
Right:while mas[i+1][j]=0 do begin mas[i][j]:=u;i:=i+1;u:=u+1;End;
Down:while mas[i][j+1]=0 do begin mas[i][j]:=u;j:=j+1;u:=u+1;End;
End;
End;
Begin
Zapolnenie;
i:=1;
j:=2;
repeat
fl:=Right;
Move;
fl:=Down;
Move;
fl:=Left;
Move;
fl:=Up;
Move;
until u=n*n;
mas[i][j]:=n*n;
Vivod;
End.