FH Darmstadt 
FB Informatik 
Prof.Dr. H.P.Weber
Programmieren I 
Klausur

20.01.04


Name:

 

MatNr.:

 

USER:

 


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: