Построение магического квадрата при (n mod 4=0)

var
   i,j,k,p,l,i1,j1,x,y,n:integer;
   a:array[1..100,1..100] of integer;
begin
 readln(n);
 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;
   inc(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;
 for i:=1 to n do
  begin
   for j:=1 to n do
    write(a[i,j]:4);
   writeln;
  end;
 readln
end.
Теги:
квадрат
Добавлено: 21 Сентября 2013 01:52:02 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...