Работа 3.7 Упр.29 ГДЗ Семакин 10 класс (Информатика)
Например, для п = 5 получаем следующую матрицу:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
14 12 11 10 9
Заполним матрицу по слоям, двигаясь по спирали: сначала верхнюю строку слева направо, затем правый столбец сверху вниз, потом нижнюю строку справа налево и левый столбец снизу вверх. После каждого обхода границы сдвигаем её внутрь и продолжаем, пока не запишем все числа от $$1$$ до $$n^2$$.
const nmax=20;
var
a: array[1..nmax,1..nmax] of byte;
n,i,j,c,k: byte;
begin
repeat
write(‘Введите размер матрицы n: ‘);
readln(n);
until n<=20;i:=1; j:=1; c:=0; k:=1;
repeat
while (k<=n*n) and (j<=n-c) do
begin
a[i,j]:=k;
inc(j);
inc(k);
end;
inc(i); dec(j);while (k<=n*n) and (i<=n-c) do
begin
a[i,j]:=k;
inc(i);
inc(k);
end;
dec(j); dec(i);while (k<=n*n) and (j>=1+c) do
begin
a[i,j]:=k;
dec(j);
inc(k);
end;
inc(c); inc(j); dec(i);while (k<=n*n) and (i>=1+c) do
begin
a[i,j]:=k;
dec(i);
inc(k);
end;
inc(j); inc(i);
until k>n*n;writeln(‘Матрица по спирали:’);
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:4);
writeln;
end;
end.
Для $$n=5$$ получится матрица:
| 1 | 2 | 3 | 4 | 5 |
| 16 | 17 | 18 | 19 | 6 |
| 15 | 24 | 25 | 20 | 7 |
| 14 | 23 | 22 | 21 | 8 |
| 13 | 12 | 11 | 10 | 9 |
Ответ
Программа заполняет квадратную матрицу числами $$1,2,3,\dots,n^2$$ по спирали и выводит полученную матрицу.