martes, 14 de octubre de 2014

AWP: Unterricht von 2014-10-13 Würfelspiel

Würfeln war zu allen Zeiten ein beliebtes Spiel. Simulieren Sie mit Holfe eines Programms das 10-malige Werfen eines Würfels durch einen Spieler. Geben Sie das Ergebnis und die Häufigkeitsverteilung der geworfenen Zahlen aus.


  1. Folgende Vorgehensweise kann Ihnen bei der Implementierung helfen:
    1. Legen Sie geeignete Variablen zum Verwalten der gezogenen Zahlen und der ermittelten Häufigkeiten an.
    2. "Würfeln" Sie 10 Zufallszahlen.
    3. Geben Sie die gezogenen Zahlen aus.
    4. Ermitteln Sie die Häufigkeit des keweiligen Auftretens der Augenzahlen von 1 bis 6.
    5. Geben Sie diese Häufigkeiten aus.
    6. Erweitern Sie das Programm derart, dass nicht nur ein Spieler beteiligt ist, sondern mehrere Spieler mitspielen.
  2. Überlegen Sie sich, wie Sie das Programm erweitern müssten, um auch die Namen und die Adressen der Spieler verwalten zu können.

Hinweise:
  • Programmieren Sie so, dass eine Änderung der Spielerzahl und der Wurfzahl pro Spieler möglichst wenig Aufwand bedeutet.
  • Das Layout kann sich an untenstehender Abbildung orientieren. Es ist ein Testfall für 8 Spielern mit je 10 Würfen abgebildet.
  • Für die Generierung der Zufallszahlen können Sie die Funktionen randomize() und rand() einsetzen.




Übungen:

1. Legen Sie eine geeignete Variable zum Verwalten der gezogenen Zahlen an!

int aiValues[10];

2. Würfeln Sie 10 Zufallszahlen!

for ( int k = 0; k < 10; k++) {
  aiValue[k] = rand() % 6 + 1;
}

3. Ermitteln Sie die Häufigkeitsverteilung der gezogenen Zahlen!

int aiTimes[6];

for (int k = 0; k < 10; k++) {
  aiTimes[aiValues[k] - 1] ++;
}

4. Erweitern Sie das Programm, so dass verschiedene Spieler verwaltet werden können!

2014.10.15

5. Die Namen der beteiligten Spieler sollen verwaltbar sein!

der Name ist keine int-Info, also nicht wie bisher im Feld verwaltbar, also brauchen wir eine Datenstruktur die mehrere verschiedene Datentypen verwalten kann

struct StrukturtypName {
  Datentyp StrukturelementName;
  Datentyp StrukturelementName;
};

struct T_Wuerfeln {
  char cName[20];
  int aiZehnMalZufall[10];
};

6. Definieren Sie eine Variable für einen einzelnen Spieler!

T_Wuerfeln Spieler;

7. Lesen Sie den Namen des Spielers ein!

cin >> Spieler.cName;

8. Speichern Sie die gewürfelten Zahlen des Spielers!

for(int i = 0; i < 10; i++) {
  Spieler.aiZehnMalZufall[i] = rand() % 6 +1;
}

9. Zeigen Sie den Namen und die Würfelergebnisse an!

cout << Spieler.cName << ": ";
for(int i = 0; i < 10; i++) {
  cout << Spieler.aiZehnMalZufall[i] << " ";
}

10. Definieren Sie eine Variable für mehrere Spieler (z.B. 8)!

T_Wuerfeln Spieler[8];

11. Lesen Sie die Namen der Spieler ein!

for(int i = 0; i < 8; i++) {
  cin >> Spieler[i].cName;
}

12. Speichern Sie alle gewürfelten Zahlen aller Spieler!

for(int spnr = 0; spnr < 8; spnr++) {
  for(int i = 0; i < 10; i++) {
    Spieler[spnr].aiZehnMalZufall[i] = rand() % 6 + 1;
  }
}

13. Zeigen Sie alle Namen und alle Würfelergebnisse an!

14. Ermitteln Sie die gesamte Häufigkeitsverteilung!

Welche Änderungen sind zue Speicherung der Häufigkeitsverteilung jedes einzelnen Spielers nötig?



Quellcode:

Würfelspiel für 1 Spieler: https://github.com/binary-sequence/awp-uebungen/blob/master/2014-10-13/Wuerfelspiel_1_Spieler_besser.cpp

Würfelspiel für mehrere Spieler: https://github.com/binary-sequence/awp-uebungen/blob/master/2014-10-14/Wuerfelspiel.cpp

Würfelspiel für 1 Spieler mit Name: https://github.com/binary-sequence/awp-uebungen/blob/master/2014-10-15/Wuerfelspiel_1_Spieler_mit_name.cpp

Würfelspiel für mehrere Spieler mit Namen: https://github.com/binary-sequence/awp-uebungen/blob/master/2014-10-15/Wuerfelspiel_mit_Name.cpp

Würfelspiel für mehrere Spieler mit Namen und persönliche Häufigkeit: https://github.com/binary-sequence/awp-uebungen/blob/master/2014-10-16/Wuerfelspiel_mit_Name_und_persoenliche_Haeufigkeiten.cpp

No hay comentarios:

Publicar un comentario