Prof. Dr. Franz Schweiggert Abteilung Angewandte Informationsverarbeitung 18. November 2003
Dr. Andreas Borchert, Michael Wiedemann Blatt 6


Uni Logo



Allgemeine Informatik I (WS 2003/2004)


Abgabetermin: 26. November 2003

12 Magisches Quadrat - 4 Punkte

16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1


Magisches Quadrat aus
Albrecht Dürers Melancholia I (1514)

Ein magisches Quadrat der Länge $n$ ist eine matrix-artige Anordnung der Zahlen 1 bis $n^2$, bei der die Summe jeder Zeile, jeder Spalte und der beiden Hauptdiagonalen den gleichen Wert ergibt.

In Abhängigkeit von der Länge $n$ ergibt sich zwingend die zugehörige Zeilen-, Spalten- und Diagonalen-Summe. Sie wird deswegen auch magische Konstante genannt. Für magische Quadrate der Länge 1, 2, 3 und 4 erhalten wir die magischen Konstanten 1, 51, 15 und 34. Wie sieht die allgemeine Formel für ein magisches Quadrat der Länge $n$ aus mit $n > 0$?

Zu schreiben ist ein Oberon-Programm, das die Länge $n$ einliest und die zugehörige magische Konstante ausgibt.

Hinweis: Für die Division ganzer Zahlen ist der Operator DIV zu verwenden. Beispiel: 9 DIV 4 liefert 2.

13 Abfangen von Eingabefehlern - 2 Punkte

Eine Eingabe von 0 oder negativen Zahlen für $n$ ist nicht sinnvoll. Da es aber durch Versehen dennoch geschehen kann, ist es besser, zuerst zu überprüfen, ob $n$ positiv ist. Falls ja, kann die Berechnung durchgeführt werden. Andernfalls sollte eine Fehlermeldung ausgegeben werden.

14 Die sich selbst zählende Folge - 4 Punkte

Die sich selbst zählende Folge beginnt mit einer 1, gefolgt von zwei mal die 2, drei mal die 3 und so weiter. Überraschenderweise läßt sich das $n$-te Element dieser Folge direkt mit folgender Formel berechnen:

\begin{eqnarray*}
a_n & = & \lfloor \frac{1}{2}  +  \sqrt{2n} \rfloor
\end{eqnarray*}



Die Notation $\lfloor x \rfloor$ (Gausssche Klammer) liefert die größte ganze Zahl, die kleiner oder gleich $x$ ist.

Zu schreiben ist ein Oberon-Programm, das $n$ einliest und $a_n$ ausgibt (für $n > 0$).

Hinweise: Für die Quadratwurzel steht die Funktion Math.Sqrt zur Verfügung. Um diese Funktion nutzen zu können, muß das Modul Math in der IMPORT-Anweisung mit aufgezählt werden. Für die Gausssche Klammer $\lfloor x \rfloor$ kann in Oberon die Funktion ENTIER verwendet werden. Dabei ist zu beachten, daß das Ergebnis dieser Funktion vom Typ LONGINT ist und daher die Variablen entsprechend deklariert sein sollten.

Die Formel wurde der Aufgabe 3.23 auf Seite 97 dem Buch von Graham, Knuth und Patashnik ``Concrete Mathematics'' entnommen (Addison-Wesley-Verlag, 1994).

Viel Erfolg!



Fußnoten

... 51
Dabei ist anzumerken, daß es keine magischen Quadrate der Länge 2 gibt.


Andreas Borchert 2003-11-18