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

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

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

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

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

textual
Листинг программы
const n=8;
var a:array[1..n,1..n]of integer;
    i,j,k,l:integer;
begin
k:=0;
for l:=2*n-1 downto 1  do
 begin
  if l>n then
   begin
    if odd(l) then
    for i:=1 to 2*n-l do
     begin
      k:=k+1;
      a[i,i+l-n]:=k;
     end
    else
    for i:=2*n-l downto 1 do
     begin
      k:=k+1;
      a[i,i+l-n]:=k;
     end
   end
  else if l<=n then
   begin
    if odd(l) then
    for i:=n-l+1 to n do
     begin
      k:=k+1;
      a[i,i-n+l]:=k;
     end
    else
    for i:=n downto n-l+1 do
     begin
      k:=k+1;
      a[i,i-n+l]:=k;
     end;
   end;
 end;
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:4);
  writeln;
 end;
writeln;
end.

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

  1. Переменная n инициализируется значением 8.
  2. Создается переменная a, которая является массивом целых чисел размером от 1 до n на 1 до n.
  3. Определяются три переменные i, j и k типа integer.
  4. Переменная k инициализируется значением 0.
  5. Запускается цикл for, который выполняется для каждого элемента l массива a начиная с 2*n-1 и до 1.
  6. Внутри цикла проверяется условие if l>n then .... Если это условие истинно, то l больше n, и цикл прерывается.
  7. Если условие if l>n then ... ложно, то выполняются следующие действия:
    • if odd(l) then ... - проверяется, является ли l нечетным числом.
    • Если odd(l) истинно, то выполняется цикл for i:=1 to 2*n-l do ....
    • Если odd(l) ложно, то выполняется цикл for i:=2*n-l downto 1 do ....
  8. В обоих циклах выполняется следующая последовательность действий:
    • k:=k+1; - увеличивается значение переменной k на 1.
    • a[i,i+l-n]:=k; - записывается значение k в ячейку массива a с индексами i и i+l-n.
  9. После выполнения всех циклов внутреннего цикла for, выводится информация о матрице a в формате write(a[i,j]:4); writeln;.
  10. Выводится завершающий символ writeln;.
  11. Конец программы.

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

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