Магический четно-четный квадрат - 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.

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

  1. В начале определяется тип массива a_type, который представляет собой двумерный массив размером 16x16 целых чисел.
  2. Далее определена процедура Four, которая принимает размер матрицы n и двумерный массив a в качестве параметров. Внутри процедуры определены несколько вспомогательных переменных, которые используются в цикле.
  3. Внутри цикла for, который перебирает все ячейки матрицы, значение каждой ячейки устанавливается равным n*n (значение по умолчанию для начала).
  4. Затем начинается второй цикл while, который выполняется до тех пор, пока i не станет равным n-2. Внутри этого цикла проверяется, делится ли i на 4 без остатка. Если да, то j устанавливается равным 4, иначе j устанавливается равным 2.
  5. Далее начинается внутренний цикл while, который выполняется до тех пор, пока j не станет больше n-2. Внутри этого цикла выполняются два вложенных цикла for, которые перебирают все ячейки в пределах диагоналей x и y.
  6. Значение каждой ячейки в пределах этих диагоналей увеличивается на 1.
  7. После завершения внутреннего цикла while, значение каждой ячейки вне диагоналей x и y устанавливается равным n*n-1.
  8. Затем начинается еще один цикл while, который выполняется до тех пор, пока k не станет больше n-4. Внутри этого цикла изменяются значения некоторых ячеек.
  9. После завершения цикла while, значение некоторых ячеек устанавливается равным n*n-1.
  10. В конце определена основная программа, которая запрашивает у пользователя размер матрицы и вызывает процедуру Four.
  11. Затем выводятся значения всех ячеек матрицы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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