z12.PAS

{* Элементы таблицы по спирали *}

Unit Z12;
Interface
Implementation
Begin
 writeln('Заполнить элементами таблицу, располагая их по спирали');
End.

Program z12;

Uses z12.pas; {* Эту строку можно удалить *}
{ Заполнить элементами таблицу, располагая их по спирали. }
Uses crt; {* Подключение модулей *}
Var {* Необходимые переменные *}
  i   : integer;
  j   : integer;
  m   : integer;
  n   : integer;
  l   : integer;
  r   : integer;
  tab : Array [1..50, 1..50] Of integer;
Begin
  clrscr; {* Очищаем экран *}
  write('Кол - во строк    : ');
  readln(m);
  write('Кол - во столбцов : ');
  readln(n);
  Repeat      inc(r); {* Прибавим к r единицу *}
    For i := r   To n - r + 1 Do {* Увеличиваем i от r до n с шагом 1 *}
    Begin
      inc(l); {* l++ *}
      tab[i, r] := l
    End;
  For i := r + 1 To m - r + 1 Do
  Begin
    inc(l); {* Увеличиваем l на 1 *}
    tab[n - r + 1, i] := l
  End;
  For i := n - r Downto r Do
  Begin
    inc(l); {* Увеличиваем l на 1 *}
    tab[i, m - r + 1] := l
  End;
  For i := m - r Downto r + 1 Do
  Begin
    inc(l); {* Прибавим к l единицу *}
    tab[r, i] := l
  End;
  Until l = m * n;
  For j := 1 To m Do {* Переменная j увеличивается с 1 до m *}
    For i := 1 To n Do {* Цикл для i => [1 .. n] *}
    Begin
      write(tab[i, j] : 4);
      If i = n Then
        writeln; {* Пустая строка *}
    End;
  readln; {* Ждем нажатия Enter *}
End.