Как реализовать заполнение матрицы спиралью через вложенный цикл?
Можно и с одним циклом:snippet
Работает с любыми прямоугольными матрицами.
Вспомнил, как в десятом классе решал эту же задачу. Только на Паскале и сам. Чудом сохранился код, который вам и покажу, хотя после предыдущих ответов он не несёт никакой ценности.type tabelo = array[byte,byte] of integer;
procedure filling_spiral(var Q:tabelo; a,b:integer);
  var c,d,e,f,g,h:integer;
  begin
    c:=a-1;
    d:=b-1;
    e:=1;
    if a>=b then f:=b else f:=a;
    for g:=0 to (f div 2) do
      begin
        for h:=b-d+g to d-g do
          begin
            if Q[a-c+g,h]=0 then Q[a-c+g,h]:=e else break;
            inc(e)
          end;
        for h:=a-c+g to c-g do
          begin
            if Q[h,b-g]=0 then Q[h,b-g]:=e else break;
            inc(e)
          end;
        for h:=b-g downto b-d+g+1 do
          begin
            if Q[a-g,h]=0 then Q[a-g,h]:=e else break;
            inc(e)
          end;
        for h:=a-g downto a-c+g do
          begin
            if Q[h,b-d+g]=0 then Q[h,b-d+g]:=e else break;
            inc(e)
          end
      end
  end;