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

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

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