Lottozahlen
Definieren Sie eine Klasse LottoGenerator wie im folgenden
Klassendiagramm beschrieben: |
|
LottoGenerator
|
- ARRAY_SIZE : const int
- sixNumbers : int* - seventhNumber : int
- numberOf Draws : long |
Constructor( )
Destructor( )
+ drawAllNumbers( ) : void
+ printAllNumbers( ) : void
+ sortSixNumbers( ) : void
+ getAllNumbers( int* ) : int + getNumberOfDraws( ) : long |
|
Besonderheiten der Methoden sind:
-
Der Konstruktor soll ein int-Array für die sechs Gewinnzahlen dynamisch
erzeugen, das dann über das Attribut sixNumbers
angesprochen wird. Dieses Array und die restlichen Attribute sollen sinnvoll
initialisiert werden. Die Konstante ARRAY_SIZE
gibt die Anzahl der Elemente des dynamischen int-Arrays an.
-
Durch drawAllNumbers sollen sechs
zufällig gezogene Zahlen im int-Array sixNumbers und eine siebte zufällige Zahl
(die Zusatzzahl) im Attribut seventhNumber abgelegt werden. Es gelten die
üblichen Lottoregeln: Die Zahlen sind aus dem Bereich 1 bis 49 und natürlich
alle verschieden. (Die 'Superzahl' soll nicht berücksichtigt werden.)
-
Im Attribut numberOfDraws soll über die
Zahl der Ziehungen (d.h. die Zahl der Aufrufe von
drawAllNumbers) seit der Erzeugung eines
LottoGenerator-Objekts Buch geführt werden.
-
printAllNumbers soll die Nummer der
Ziehung, die sechs gezogenen
Zahlen und die Zusatzzahl in einer geeigneten Formatierung auf dem Bildschirm
ausgeben.
-
sortSixNumbers soll die sechs
Gewinnzahlen im Array sixNumbers aufsteigend sortieren: Nach Aufruf von
sortSixNumbers steht die kleinste Zahl im
ersten Platz des Arrays, die größte im sechsten. Sie können ein Sortierverfahren
Ihrer Wahl benutzen.
-
getAllNumbers soll alle sieben gezogenen
Zahlen in das Anwendungsprogramm (main) für eine Weiterverarbeitung übergeben:
Die Zusatzzahl als Rückgabewert und die sechs Gewinnzahlen in ein vom
Anwendungsprogramm zur Verfügung gestelltes int-Array.
-
Der Destruktor soll (neben seiner Hauptaufgabe!) numberOfDraws am Bildschirm
ausgeben.
Das Anwendungsprogramm (main) soll ein
LottoGenerator-Objekt
erzeugen und dann folgende Aktivitäten durchführen:
-
Durchführung von 10 Ziehungen und Ausgabe der Ziehungsergebnisse (einschließlich
Zusatzzahl), wobei die sechs Gewinnzahlen aufsteigend sortiert sein sollen.
-
Durchführung von einer Million Ziehungen und Ermitteln, wie oft eine einstellige
Zusatzzahl auftrat.
-
Führen Sie eine Million Ziehungen durch und übergeben Sie jeweils die sechs
Gewinnzahlen an eine (globale) Funktion average.
Diese Funktion soll den ganzzahligen (also auf- bzw. abgerundeten) Mittelwert
der übergebenen Gewinnzahlen berechnen und zurückgeben. Für die zurückgegebenen
Mittelwerte soll in main eine
Häufigkeitsverteilung erstellt werden. Auf den Bildschirm auszugeben sind dann
alle vorkommenden Mittelwerte zusammen mit ihrer Häufigkeit. (Die absoluten
Zahlenwerte genügen, keine graphische Darstellung!)
| Bewertung (Punkte): |
maximal |
erreicht |
| Klassendeklaration |
12 |
|
| Konstruktor |
8 |
|
| drawAllNumbers |
12 |
|
| printAllNumbers |
8 |
|
| sortSixNumbers |
8 |
|
| getAllNumbers |
8 |
|
| getNumberOfDraws |
2 |
|
| Destruktor |
5 |
|
| main |
27 |
|
| average |
10 |
|
Gesamtpunkte:
Note:
|