Jede Zeiteinheit besteht aus zwei Phasen:
Fische schwimmen und vermehren sich
Jeder Fisch wählt sich (per Zufall) eines der freien Nachbarfelder
aus und zieht dorthin.
Erreicht der Fisch ein bestimmtes Alter (fbrut),
so entsteht an der alten Position ein neuer Fisch.
Beide Fische haben dann das Alter 0.
Gibt es kein freies Nachbarfeld, so findet auch keine Vermehrung statt.
Haie jagen und vermehren sich
Jeder Hai sucht aus den Nachbarfeldern, auf denen Fische sind
per Zufall eines aus und zieht dorthin, wobei der Fisch aufgefressen wird.
Ansonsten wählt er per Zufall ein freies Nachbarfeld aus.
Wenn ein Hai fasten Zeiteinheiten lang keinen Fisch gefressen hat,
stirbt er.
Bei Erreichen des Alters hbrut entsteht an der alten Position
ein neuer Hai.
Schreiben Sie ein C-Programm zur Simulation des Ökosystems auf dem Planeten Wa-Tor. Der Anfangszustand sollte per Zufall bestimmt werden, gesteuert durch Parameter vom Benutzer. Lesen Sie dazu die Feldgröße, die Startzahl der Haie und Fische sowie die weiteren Parameter hbrut, fbrut und fasten von der Standardeingabe. Danach soll das Programm erst die Züge der Fische, dann die der Haie berechnen und schließlich die Daten des neuen Zustandes nach Standardausgabe schreiben. Wenn das Feld klein genug ist stellen Sie den Zustand als Karte dar (in Form eines Rechtecks): "O" für Haie, "." für Fische und " " für freie Felder). Der Benutzer sollte die Möglichkeit haben, die Ausführung nach jeder Zeiteinheit abzubrechen.
Zu Wa-Tor gibt es einen ausführlichen Artikel in einem Sonderheft des Spektrum der Wissenschaft: Computer-Kurzweil.
Vernünftige Parameter sind für ein Feld mit 32 * 14 Sektoren: 200 Fische und 20 Haie zu Beginn, fbrut = 3, hbrut = 10, fasten = 3.
Die benötigten Matrizen dürfen Sie fest dimensionieren.
Legen Sie aber die Größe über Konstanten fest.
Verwenden Sie dafür die #define-Anweisung des C-Preprozessors.
Zur Erzeugung von Zufallszahlen gibt es Funktionen der C-Bibliothek: man rand.
Viel Spaß beim Experimentieren!
Martina Maier, 10. November 1998