1-11 класс
  • 1-11 класс
  • 1 класс
  • 2 класс
  • 3 класс
  • 4 класс
  • 5 класс
  • 6 класс
  • 7 класс
  • 8 класс
  • 9 класс
  • 10 класс
  • 11 класс
Выберите класс
Предметы
Семакин
Работа 3.7 Упр.29 ГДЗ Семакин 10 класс (Информатика)
Семакин, Хеннер, Шеина
10 класс
Автор
Семакин, Хеннер, Шеина

Работа 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$$ получится матрица:

12345
161718196
152425207
142322218
131211109

Ответ

Программа заполняет квадратную матрицу числами $$1,2,3,\dots,n^2$$ по спирали и выводит полученную матрицу.



Общая оценка
3.6 / 5
Другие учебники
Другие предметы