Заполнение матрици по спирали

Оригинал статьи: http://www.cyberforum.ru/pascal/thread133142.html
Благодарен всем авторам, которые внесли свой вклад в сборку кода.

 
var
  a: array [1..100, 1..100] of integer;
  i, m, k, n: integer;

begin
  writeln('Размерность массива =');
  readln(n);
  k := 0;
  m := 0;
  repeat
    for i := m + 1 to n - m do
    begin
      inc(k);                      
      a[i, m + 1] := k;
    end;
    for i := m + 2 to n - m do
    begin
      inc(k);
      a[n - m, i] := k;
    end;
    for i := n - m - 1 downto m + 1 do
    begin
      inc(k);                                  
      a[i, n - m] := k;
    end;
    for i := n - m - 1 downto m + 2 do
    begin
      inc(k);
      a[m + 1, i] := k;
    end;
    inc(m);
  until m + 1 = n div 2 + 2;
  for i := 1 to n do
  begin
    for k := 1 to n do
      write(a[i, k]:3, ' ');
    writeln;
  end;
end.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии