Заполнить квадратную матрицу числами натурального ряда в последовательности указанной на рисунке - 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.
Объяснение кода листинга программы
- Переменная
n
инициализируется значением 8. - Создается переменная
a
, которая является массивом целых чисел размером от 1 доn
на 1 доn
. - Определяются три переменные
i
,j
иk
типаinteger
. - Переменная
k
инициализируется значением 0. - Запускается цикл
for
, который выполняется для каждого элементаl
массиваa
начиная с2*n-1
и до1
. - Внутри цикла проверяется условие
if l>n then ...
. Если это условие истинно, тоl
большеn
, и цикл прерывается. - Если условие
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 ...
.
- В обоих циклах выполняется следующая последовательность действий:
k:=k+1;
- увеличивается значение переменнойk
на 1.a[i,i+l-n]:=k;
- записывается значениеk
в ячейку массиваa
с индексамиi
иi+l-n
.
- После выполнения всех циклов внутреннего цикла
for
, выводится информация о матрицеa
в форматеwrite(a[i,j]:4); writeln;
. - Выводится завершающий символ
writeln;
. - Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д