Заполнить (квадратную) матрицу 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.
Объяснение кода листинга программы
- Создается переменная
a
типаarray[1..19,1..19] of integer;
, которая представляет собой квадратную матрицу размером от 3 до 19 строк и столбцов. - Создаются три переменные
n
,i
,j
типаinteger;
, которые будут использоваться для итерации по матрице. - В цикле
repeat
выполняется запрос на ввод размера матрицы. Размер должен быть целым числом от 3 до 19. Цикл продолжается, пока введенное значение не будет удовлетворять этому условию. - Переменная
k
инициализируется значением 0. Она будет использоваться для отслеживания текущего значения, которое будет увеличиваться на единицу при каждой итерации цикла. - В цикле
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
.
- Если текущая строка
- После завершения цикла
for
записывается значение переменнойk
в соответствующую ячейку матрицыa[i,j]
. - После завершения всех циклов выполняется вывод матрицы
a
. Для этого используется циклfor
i:=1 to n do
и циклfor j:=1 to n do
. Если значение в ячейкеa[i,j]
больше 0, то оно выводится на экран в формате4 цифр
. В противном случае выводится пробел. - Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д