Есть простая задача. Вывести числа в массиве по спирали, например:
01 02 03 04
12 13 14 05
11 16 15 06
10 09 08 07
Для такого варианта задача решена.
var
s:array[1..n,1..m] of integer;
i,j,k,p:integer;
begin
i:=0; k:=0; p:=1;
while i<n*m do
begin
k:=k+1;
for j:=k to m-k+1 do
begin
i:=i+1;
s[k,j]:=p;
p:=p+1;
end;
for j:=k+1 to n-k+1 do
begin
i:=i+1;
s[j,m-k+1]:=p;
p:=p+1;
end;
for j:=m-k downto k do
begin
i:=i+1;
s[n-k+1,j]:=p;
p:=p+1;
end;
for j:=n-k downto k+1 do
begin
i:=i+1;
s[j,k]:=p;
p:=p+1;
end
end;
for i:=1 to n do
begin
for j:=1 to m do
write(s[i,j]:4,' ');
writeln
end
end.
Но дальше - больше =)
Спираль может начинаться с любого внешнего элемента. Как это сделать?? Никто не подскажет??