Заполнить квадратную матрицу числами натурального ряда в последовательности указанной на рисунке - 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;. - Конец программы.