Заполнить (квадратную) матрицу a(n,n) числами натурального ряда в последовательности указанной на рисунке - Pascal ABC

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

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

Нужно заполнить (квадратную) матрицу a(n,n) числами натурального ряда в последовательности указанной на рисунке и вывести ее на экран. Pascal abc. Рисунок 37. Кто может киньте готовый код, пожалуйста, а то никак не могу понять как решать такое.

Решение задачи: «Заполнить (квадратную) матрицу a(n,n) числами натурального ряда в последовательности указанной на рисунке»

textual
Листинг программы
var a:array[1..19,1..19] of integer;
    n,i,j,k:integer;
begin
repeat
write('Введите размер матрицы целое число от 3 до 19 n=');
readln(n);
until n in [3..19];
k:=0;
for i:=n downto 1 do
 begin
  if i>n div 2 then
  if odd(i) then
  for j:=n-i+1 to i do
   begin
    inc(k);
    a[i,j]:=k;
   end
  else
  for j:=i downto n-i+1 do
   begin
    inc(k);
    a[i,j]:=k;
   end
  else
  if odd(i) then
  for j:=i to n-i+1 do
   begin
    inc(k);
    a[i,j]:=k;
   end
  else
  for j:=n-i+1 downto i do
   begin
    inc(k);
    a[i,j]:=k;
   end;
 end;
for i:=1 to n do
 begin
  for j:=1 to n do
  if a[i,j]>0 then write(a[i,j]:4)
  else write(' ':4);
  writeln;
 end;
end.

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

  1. Создается переменная a типа array[1..19,1..19] of integer;, которая представляет собой квадратную матрицу размером от 3 до 19 строк и столбцов.
  2. Создаются три переменные n, i, j типа integer;, которые будут использоваться для итерации по матрице.
  3. В цикле repeat выполняется запрос на ввод размера матрицы. Размер должен быть целым числом от 3 до 19. Цикл продолжается, пока введенное значение не будет удовлетворять этому условию.
  4. Переменная k инициализируется значением 0. Она будет использоваться для отслеживания текущего значения, которое будет увеличиваться на единицу при каждой итерации цикла.
  5. В цикле for выполняется следующая логика:
    • Если текущая строка i больше n делить на 2, то есть если i является четным числом, и если i не делится на 2, то есть если i - нечетное число.
    • Если i является четным числом и i делится на 2, то есть если i меньше или равно n делить на 2, то выполняется цикл for j:=i-1 до i-i+1. Это означает, что для каждой четной строки i выполняется цикл for j:=i-1 до i-i+1.
    • Если i является нечетным числом, то выполняется цикл for j:=i до n-i+1. Это означает, что для каждой нечетной строки i выполняется цикл for j:=i до n-i+1.
    • Если i является четным числом и i не делится на 2, то выполняется цикл for j:=i+1 до n-i+1. Это означает, что для каждой четной строки i выполняется цикл for j:=i+1 до n-i+1.
  6. После завершения цикла for записывается значение переменной k в соответствующую ячейку матрицы a[i,j].
  7. После завершения всех циклов выполняется вывод матрицы a. Для этого используется цикл for i:=1 to n do и цикл for j:=1 to n do. Если значение в ячейке a[i,j] больше 0, то оно выводится на экран в формате 4 цифр. В противном случае выводится пробел.
  8. Конец программы.

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

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