Prof. Dr. Franz Schweiggert Institut für Angewandte Informationsverarbeitung 5. Juni 2008
Christoph Ott Blatt 6


Uni Logo



Einführung in die Programmierung
(SS 2008)



Abgabetermin: 12. Juni 2008

1 Euro'2008

Am Samstag startet die Fußball-Europameisterschaft 2008. Auf dem aktuellen Blatt sollt Ihr Euch deshalb schon mal ausgiebig mit den teilnehmenden Mannschaften und ihren Vorrunden-Ergebnissen beschäftigen.

1.1 Nationen in der Deutschland-Gruppe (2P)

Findet erst einmal heraus, welche Mannschaften in der Deutschland-Gruppe spielen. Dann legt Ihr einen Array von Strings an. Den jeweiligen Array-Elementen weist Ihr die entsprechenden Mannschaften als String zu. Habt Ihr das alles geschafft, so gebt in einer for-Schleife alle im Array (also in der Deutschland-Gruppe) enthaltenen Strings (also Nationen) aus. Auf dem Bildschirm kann das etwa folgendermaßen aussehen:
Folgende Teams spielen in der Deutschland-Gruppe:
- Oesterreich
- Kroatien
- Deutschland
- Polen

1.2 Nationen in einer beliebigen Gruppe (2P)

Vorige Teilaufgabe soll nun dahingehend erweitert werden, dass der Benutzer eine beliebige Gruppe (A, B, C oder D) auswählen kann, deren Nationen dann am Bildschirm ausgegeben werden. Hierzu empfiehlt es sich analog zu voriger Teilaufgabe einen Array von Strings anzulegen, dann die gewünschte Gruppe abzufragen und über eine switch-Anweisung den Array abhängig von der gewählten Gruppe zu füllen. Auf dem Bildschirm kann das etwa folgendermaßen aussehen:
Waehlen Sie eine Vorrunden-Gruppe aus (A,B,C,D)!
A
Folgende Teams spielen in der Gruppe A:
- Schweiz
- Tschechien
- Portugal
- Tuerkei

1.3 Simulation der Ergebnisse (2P)

Nun soll natürlich auch gespielt werden. In den Übungen bekommt Ihr gezeigt, wie über zwei for-Schleifen alle Spiele (wenn auch nicht in der richtigen Reihenfolge) durchlaufen werden können. Nun muss also lediglich noch für jedes Spiel ein zufälliges Ergebnis bestimmt werden. Fügt Ihr die Zeile import java.lang.Math; direkt nach dem import IOulm.*; in Euer Programm ein, so könnt Ihr mit dem Aufruf Math.random(); eine reelle Zufallszahl zwischen 0 und 1 erhalten. Wie Ihr nun zufällige Spielergebnisse erzeugt, bleibt Euch überlassen. Eine Möglichkeit ist, die mittels Math.random(); erhaltene Zahl mit 4 zu multiplizieren (somit erhält man eine reelle Zufallszahl zwischen 0 und 4) und diese dann auf int zu casten (somit erhält man genau eine der Zahlen 0, 1, 2, 3, jeweils mit der selben Wahrscheinlichkeit). Dies kann man für beide Mannschaften machen und erhält somit ein halbwegs realistisches Ergebnis. Auf dem Bildschirm kann das dann etwa folgendermaßen aussehen:
Waehlen Sie eine Vorrunden-Gruppe aus (A,B,C,D)!C
Frankreich  - Rumaenien   0 : 0
Frankreich  - Italien     2 : 2
Frankreich  - Niederlande 0 : 0
Rumaenien   - Italien     1 : 0
Rumaenien   - Niederlande 3 : 2
Italien     - Niederlande 0 : 2

1.4 Aufaddieren der gesammelten Punkte (2P)

Um bestimmen zu können, welche Mannschaften die Vorrunde überstehen, müssen nun natürlich die Punkte jeder Mannschaft aufaddiert werden. Dabei könnt Ihr prinzipiell genauso vorgehen wie in PunkterundeFor.java auf Blatt 3. Der Unterschied besteht jedoch darin, dass diesmal die Punktesumme nicht nur für eine Mannschaft gebildet werden muss, sondern für alle vier Mannschaften. Es empfiehlt sich also einen Array punkte der Größe 4 anzulegen, für den in jedem Element die Punktesumme einer Mannschaft gebildet wird. Gebt die Punkte jeder Mannschaft abschließend am Bildschirm aus. Das kann etwa folgendermaßen aussehen:
Waehlen Sie eine Vorrunden-Gruppe aus (A,B,C,D)!D
In Gruppe D gab es folgende Ergebnisse:
Russland     - Spanien      3 : 1
Russland     - Schweden     2 : 3
Russland     - Griechenland 2 : 0
Spanien      - Schweden     3 : 0
Spanien      - Griechenland 2 : 2
Schweden     - Griechenland 2 : 3

Mannschaft      Punkte
----------------------
Russland        6     
Spanien         4     
Schweden        3     
Griechenland    4

1.5 Erstellen des Torverhältnisses (2P)

In obiger Gruppe ist allein auf Grund der gesammelten Punkte nicht klar, ob Spanien oder Griechenland das Viertelfinale erreichen werden. Deshalb sollte Eure Auswertung auf jeden Fall auch noch das Torverhältnis berücksichtigen. Auch dies kann analog zur Aufgabe PunkterundeFor.java auf Blatt 3 geschehen, jedoch muss auch hier die dortige Lösung auf vier Team übertragen werden. Dazu empfiehlt sich das Anlegen zweier Array tore und gegentore, in denen die Tore und Gegentore aller Mannschaften verwaltet werden. Vorige Teilaufgabe, um das Torverhältnis erweitert, sieht auf dem Bildschirm etwa folgendermaßen aus:
Waehlen Sie eine Vorrunden-Gruppe aus (A,B,C,D)!D
In Gruppe D gab es folgende Ergebnisse:
Russland     - Spanien      3 : 1
Russland     - Schweden     2 : 3
Russland     - Griechenland 2 : 0
Spanien      - Schweden     3 : 0
Spanien      - Griechenland 2 : 2
Schweden     - Griechenland 2 : 3

Mannschaft      Punkte  Tore
----------------------------
Russland        6       7:4
Spanien         4       6:5
Schweden        3       5:8
Griechenland    4       5:6
Somit hätte also Spanien das Viertelfinale erreicht.

1.6 Bonusaufgabe: Erstellen einer Tabelle (3P*)

Optisch schöner wäre vorige Teilaufgabe natürlich, wenn die Teams in der Reihenfolge Ihres Tabellenplatzes aufgelistet würden. Das heißt, abhängig von den gesammelten Punkten und (gegebenenfalls) dem Torverhältnis muss die Reihenfolge der Teams verändert werden. Wenn Ihr hierfür eine Lösung findet, könnt Ihr von Eurem Tutor bis zu 3 Zusatzpunkte bekommen. Außerdem erhält derjenige von Euch, der mir bis nächsten Donnerstag 12:00 Uhr die beste Lösung zumailt einen kleinen Preis.

Viel Erfolg!



Christoph Ott 2008-06-05