Problemstellung
Ein Magisches Quadrat soll erzeugt werden.
Unter einem magischen Quadrat der Ordnung n versteht man die Anordnung von verschiedenen Zahlen in einem quadratischen Schema, so dass die Summe der n Zahlen in jeder Zeile, in jeder Spalte und in jeder der beiden Hauptdiagonalen, also der von links oben nach rechts unten absteigenden und der von links unten nach rechts oben aufsteigenden Hauptdiagonalen, jeweils denselben festen Wert s besitzt.
http://www.mathe.tu-freiberg.de/~hebisch/cafe/magisch.html
Hier ein einfaches Programm, um ein zweidimensionales Feld zu demonstrieren.
Program Magisches_Quadrat_version1;
const max = 3;
var
quadrat : array[1..max,1..max] of integer;
zeile, spalte: integer;
eintrag : integer;
begin {quadrat }
for zeile := 1 to max do
for spalte := 1 to max do
quadrat[ zeile, spalte ] := 0;
zeile := 1;
spalte := 2;
eintrag := 1;
quadrat[ zeile, spalte ] := eintrag;
while eintrag <= max*max do
begin
if zeile = 1 then
begin
if spalte = max then
zeile := zeile +1
else
begin
spalte := spalte +1;
zeile := max;
end;
end { zeile = 1}
else
begin { Zeile <> 1 }
if spalte = max then
begin
zeile := zeile -1;
spalte := 1;
end
else
begin
spalte := spalte +1;
zeile := zeile -1;
if mag_quadrat[ zeile, spalte ] <> 0 then
begin
spalte := spalte - 1;
zeile := zeile + 2;
end;
end;
end;
eintrag := eintrag +1;
mag_quadrat[ zeile, spalte ] := eintrag;
end; { of while }
for zeile := 1 to max do
begin
for spalte := 1 to max do
write(mag_quadrat[ zeile, spalte ],' ');
writeln;
end;
readln
end. {Quadrat}