Вот собственно код на паскале
Код: Выделить всё
begin
i:=0; k:=0; p:=1;
while i<n*m do
begin
inc(k);
for j:=k to m-k+1 do
begin
inc(i);
s[k,j]:=p;
inc(p);
end;
for j:=k+1 to n-k+1 do
begin
inc(i);
s[j,m-k+1]:=p;
inc(p);
end;
for j:=m-k downto k do
begin
inc(i);
s[n-k+1,j]:=p;
inc(p);
end;
for j:=n-k downto k+1 do
begin
inc(i);
s[j,k]:=p;
inc(p);
end
end;