Dein Fortschritt:
0 / 0 Aufgaben
1
Schere, Stein, Papier
AFB I–IIPia programmiert „Schere, Stein, Papier“ gegen den Computer: fünf Runden, der Computer wählt zufällig. Die Zahlen 0, 1, 2 stehen für Schere, Stein, Papier; Stein schlägt Schere, Papier schlägt Stein, Schere schlägt Papier.
C++ · ssp.cpp
#include <iostream> #include <string> #include <cstdlib> using namespace std; int main() { string namen[3] = {"Schere", "Stein", "Papier"}; int punkteSpieler = 0; int punkteComputer = 0; for (int runde = 1; runde <= 5; runde++) { int computer = rand() % 3; int spieler; cout << "Runde " << runde << " (0 Schere, 1 Stein, 2 Papier): "; cin >> spieler; cout << "Computer: " << namen[computer] << endl; if (spieler == computer) { cout << "Unentschieden" << endl; } else if (spieler == (computer + 1) % 3) { cout << "Punkt fuer dich" << endl; punkteSpieler++; } else { cout << "Punkt fuer den Computer" << endl; punkteComputer++; } } cout << "Endstand " << punkteSpieler << " : " << punkteComputer << endl; return 0; }
Pia spielt eine Partie. Danach setzt sich ihr Bruder Jan an den Rechner, startet das Programm neu — und gewinnt 5 : 0.
Probelauf 1 · Pia
Runde 1 (0 Schere, 1 Stein, 2 Papier): 0 Computer: Stein Punkt fuer den Computer Runde 2 (0 Schere, 1 Stein, 2 Papier): 1 Computer: Stein Unentschieden Runde 3 (0 Schere, 1 Stein, 2 Papier): 2 Computer: Schere Punkt fuer den Computer Runde 4 (0 Schere, 1 Stein, 2 Papier): 0 Computer: Stein Punkt fuer den Computer Runde 5 (0 Schere, 1 Stein, 2 Papier): 1 Computer: Papier Punkt fuer den Computer Endstand 0 : 4
Probelauf 2 · Jan
Runde 1 (0 Schere, 1 Stein, 2 Papier): 2 Computer: Stein Punkt fuer dich Runde 2 (0 Schere, 1 Stein, 2 Papier): 2 Computer: Stein Punkt fuer dich Runde 3 (0 Schere, 1 Stein, 2 Papier): 1 Computer: Schere Punkt fuer dich Runde 4 (0 Schere, 1 Stein, 2 Papier): 2 Computer: Stein Punkt fuer dich Runde 5 (0 Schere, 1 Stein, 2 Papier): 0 Computer: Papier Punkt fuer dich Endstand 5 : 0
Nach jeder Partie möchte Pia außerdem ein „Glücksrad“ drehen lassen, das zufällig 10, 20, 30, 40 oder 50 Bonuspunkte vergibt — jeden Wert gleich wahrscheinlich.
- Entnehmen Sie den beiden Probeläufen, welches Zeichen der Computer in den Runden 1 bis 5 jeweils wählt, und notieren Sie, was dabei auffällt.
- Erklären Sie diese Beobachtung und wie Pia das Programm verbessern muss. Gehen Sie auch darauf ein, an welcher Stelle die Verbesserung stehen muss.
- Stellen Sie einen C++-Ausdruck mit
rand()für die Bonuspunkte des Glücksrads auf und begründen Sie ihn schrittweise.
Hinweise
Hinweis zu Aufgabe a)
Schreiben Sie die fünf Zeilen „Computer: …“ der beiden Läufe nebeneinander.
Hinweis zu Aufgabe b)
rand() berechnet seine Zahlen aus einem Startwert. Welcher Startwert wird benutzt, wenn das Programm keinen festlegt? Welche Funktion setzt ihn, und womit bekommt man bei jedem Start einen anderen?Hinweis zu Aufgabe c)
Wie viele verschiedene Werte gibt es? Beginnen Sie mit
rand() % n und formen Sie Schritt für Schritt um, bis der Wertebereich stimmt. Prüfen Sie am Ende den kleinsten und den größten Wert.