home *** CD-ROM | disk | FTP | other *** search
- {$M 5,1,1,10}
- {Show a magic square, where the sum of each
- coloum, row or diagonal is the same
- }
-
- Program magic(input,output);
- Uses Crt;
- const
- maxsize = 19;
-
- type
- sqrtype = array[1..maxsize,1..maxsize] of integer;
-
- var
- sqare: sqrtype;
- Size,row,col: integer;
-
- procedure makesqare(var sq:sqrtype;limit:integer);
- var
- num,r,c: integer;
- begin
- for r:=1 to limit do for c:=1 to limit do sq[r,c]:=0;
- r:=(limit+1) div 2;
- c:=limit;
- for num:=1 to sqr(limit) do begin
- if sq[r,c]<>0 then begin
- r:=r-1; if r<1 then r:=r+limit;
- c:=c-2; if c<1 then c:=c+limit
- end;
- sq[r,c]:=num;
- gotoxy(r*4,2+c); write(num:4);
- r:=r+1; if r>limit then r:=r-limit;
- c:=c+1; if c>limit then c:=c-limit
- end
- end;
-
- begin
- Size:=5;
- repeat
- if ((Size>2) and (Size<maxsize+1)) and (odd(Size)) then begin
- ClrScr;
- makesqare(sqare,Size);
- writeln;
- end else begin
- write('Only odd numbers in the range 3..',maxsize:0)
- end;
- gotoxy(1,Hi(WindMax)-1);
- ClrEol;
- write('Enter size (0 to exit) : '); read(Size);
- Writeln;
- until Size=0;
- end.
-