Магический четно-четный квадрат - Pascal ABC
Формулировка задачи:
Магический четно четный квадрат,напишите пожалуйста данную программу в паскале abc
Решение задачи: «Магический четно-четный квадрат»
textual
Листинг программы
type a_type=array[1..16,1..16] of integer; procedure Four(n:integer; var a:a_type); var i,j,k:integer; p,l:integer; i1,j1,x,y:integer; Begin l:=1; p:=n*n; for i:=1 to n do for j:=1 to n do begin a[i,j]:=l; inc(l) end; i:=2; while i<=n-2 do begin if i mod 4=0 then j:=4 else j:=2; while j<=n-2 do begin for i1:=0 to 1 do for j1:=0 to 1 do begin y:=i+i1; x:=j+j1; a[y,x]:=p-a[y,x]+1; end; j:=j+4; end; i:=i+2 end; k:=4; while k<=n-4 do begin a[1,k]:=p-a[1,k]+1; a[1,k+1]:=p-a[1,k+1]+1; a[n,k]:=p-a[n,k]+1; a[n,k+1]:=p-a[n,k+1]+1; a[k,1]:=p-a[k,1]+1; a[k+1,1]:=p-a[k+1,1]+1; a[k,n]:=p-a[k,n]+1; a[k+1,n]:=p-a[k+1,n]+1; k:=k+4 end; a[1,1]:=p-a[1,1]+1; a[n,n]:=p-a[n,n]+1; a[1,n]:=p-a[1,n]+1; a[n,1]:=p-a[n,1]+1; end; var a:a_type; n,i,j:integer; begin repeat write('Введите размер матрицы 4 или 8 или 16 n='); readln(n); until n in [4,8,16]; Four(n,a); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4); writeln; end; end.
Объяснение кода листинга программы
- В начале определяется тип массива a_type, который представляет собой двумерный массив размером 16x16 целых чисел.
- Далее определена процедура Four, которая принимает размер матрицы n и двумерный массив a в качестве параметров. Внутри процедуры определены несколько вспомогательных переменных, которые используются в цикле.
- Внутри цикла for, который перебирает все ячейки матрицы, значение каждой ячейки устанавливается равным n*n (значение по умолчанию для начала).
- Затем начинается второй цикл while, который выполняется до тех пор, пока i не станет равным n-2. Внутри этого цикла проверяется, делится ли i на 4 без остатка. Если да, то j устанавливается равным 4, иначе j устанавливается равным 2.
- Далее начинается внутренний цикл while, который выполняется до тех пор, пока j не станет больше n-2. Внутри этого цикла выполняются два вложенных цикла for, которые перебирают все ячейки в пределах диагоналей x и y.
- Значение каждой ячейки в пределах этих диагоналей увеличивается на 1.
- После завершения внутреннего цикла while, значение каждой ячейки вне диагоналей x и y устанавливается равным n*n-1.
- Затем начинается еще один цикл while, который выполняется до тех пор, пока k не станет больше n-4. Внутри этого цикла изменяются значения некоторых ячеек.
- После завершения цикла while, значение некоторых ячеек устанавливается равным n*n-1.
- В конце определена основная программа, которая запрашивает у пользователя размер матрицы и вызывает процедуру Four.
- Затем выводятся значения всех ячеек матрицы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д