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