Wednesday, February 4, 2009

Magic Square

program magic_square;
uses wincrt;

type
matriks = Array[1..20,1..20] of Integer;
var
x: matriks;
n,i,j,k : Integer;
jwb:char;
Begin
clrscr;
repeat
writeln('Please input queer number ');
writeln;
writeln;
write('Input ordo matriks, n = '); Readln(n);
if n mod 2 = 0 then writeln('wrong input (please input queer number)')
else
begin
{ inisialisasi kotak, array di isi dengan 0 }
For i:=1 to n do
For j:=1 to n do x[i,j]:= 0;

i:=1;
j:= (n + 1) div 2;
k:=0;
end;
repeat
k:=k+1;
begin
x[i,j]:=k;
i:=i-1;
j:=j-1;
end;
Begin
if (i=0) and (j<>0) then
i:=n
else if (j=0) and (i<>0) then
j:=n
else if (i=0) and (j=0) then
begin
i:=2;
j:=1;
end;
if x[i,j]<>0 then
begin
i:=i+2;
j:=j+1;
End;
end;
until k > sqr(n);
For i:= 1 to n do
begin
For j:=1 to n do
begin
write(x[i,j]:4);
end;
writeln;
end;
writeln('repeat again?? [Y/N]') ;
readln(jwb);
until not (jwb in['y','Y']);
end.

if we run the statement,we are get output like this :

kotak