Заполнение матрицы в соответствии со схемой - Pascal

Узнай цену своей работы

Формулировка задачи:

Дано натуральное N (1<=N<=10). Заполнить матрицу порядка NxN целыми числами 1, 2, 3, …, N в соответствии со схемой расположения:

Решение задачи: «Заполнение матрицы в соответствии со схемой»

textual
Листинг программы
uses crt;
type
  arr = array [1..100, 1..100] of integer;
 
var
  a: arr;
  p, q, n: integer;
 
procedure makeArr(var massiv: arr; nMax: integer);
var
  k, m, i: integer;
begin
  k := 0;
  m := 0;
  repeat
    for i := m + 1 to nMax - m do
    begin
      inc(k);                      
      a[i, m + 1] := k;
    end;
    for i := m + 2 to nMax - m do
    begin
      inc(k);
      a[nMax - m, i] := k;
    end;
    for i := nMax - m - 1 downto m + 1 do
    begin
      inc(k);                                  
      a[i, nMax - m] := k;
    end;
    for i := nMax - m - 1 downto m + 2 do
    begin
      inc(k);
      a[m + 1, i] := k;
    end;
    inc(m);
  until m + 1 = nMax div 2 + 2;
end;
 
begin
  writeln('Vvesti chislo');
  readln(n); 
  makeArr(a,n);
  for p := 1 to n do
  begin
    for q := 1 to n do
      write(a[p, q]:3, ' ');
    writeln;
  end;
end.

Объяснение кода листинга программы

  1. Создается тип данных arr, который представляет собой массив целых чисел размером от 1 до 100 в каждой из двух осей.
  2. Создается переменная a типа arr.
  3. Создаются три переменные p, q и n, которые будут использоваться для заполнения матрицы.
  4. Вызывается процедура makeArr, которая принимает массив massiv и максимальное значение nMax в качестве параметров.
  5. Внутри процедуры makeArr создаются три переменные k, m и i, которые будут использоваться для заполнения матрицы.
  6. Цикл repeat выполняется столько раз, сколько необходимо для заполнения матрицы размером nMax.
  7. Внутри цикла repeat выполняется цикл for, который проходит по всем элементам матрицы от m + 1 до nMax — m.
  8. Для каждого элемента выполняется три вложенных цикла for, которые проходят по всем индексам от i = m + 1 до i = nMax — m.
  9. В каждом из вложенных циклов for значение переменной k увеличивается на единицу, а затем присваивается соответствующему элементу матрицы.
  10. После завершения всех вложенных циклов for значение переменной m увеличивается на единицу.
  11. Цикл repeat завершается, когда m + 1 становится равным nMax / 2 + 2.
  12. После завершения процедуры makeArr выводится сообщение с числом n, которое было введено пользователем.
  13. Выводится заполненная матрица с помощью цикла for и оператора write.
  14. Программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы