Я бы сделал так
| Код | program Spiral;
{$APPTYPE CONSOLE}
uses SysUtils;
const N = 30; var matr : array [1..N, 1..N] of integer; size : integer; i, j, k : integer; count : integer; // количество витков спирали num : integer; begin writeln('Input matrix size'); readln(size); count := size div 2 + 1; num := 1; // число, которым будем заполнять матрицу
for i := 1 to count do // основной цикл begin // верняя горизонталь for k := i to (size - i + 1) do begin matr[i, k] := num; Inc(num); end;
// правая вертикаль for k := i + 1 to (size - i) do begin matr[k, size - i + 1] := num; Inc(num); end;
// нижняя горизонталь for k := (size - i + 1) downto i + 1 do begin matr[size - i + 1, k] := num; Inc(num); end;
// левая вертикаль for k := (size - i + 1) downto i + 1 do begin matr[k, i] := num; Inc(num); end;
end;
Writeln('Your matrix'); for i := 1 to size do begin for k := 1 to size do write(matr[i, k] : 4); writeln; end; readln; end.
|
|