ich versuche schon seit fast einer stunde den fehler im folgendem programm zu finden doch bis jetzt ohne erfolg. diese programm soll ein spiel darstellen, bei dem man anfangs eine anzahl von münzen festlegt und sie anschließend enfernt *maximal drei auf einmal* doch leider klappt es noch nicht vieleicht weis einer von euch ja an was es liegt
C++:
#include <iostream>
usingnamespace std;
int main() { int am; //Anzahl der Münzen int sf; //Größ des Spielfeldes int sp; //Spieler int cp; //Computer
cout << "Mit wievielen Münzen möchten sie starten?\n"; //Anzahl der münzen cin >> am;
while (am>0) //Solange bis keine münze mehr vorhanden ist { while (sp<1 && sp>3) //Zug des Spielers { cout << "Wieviel Münzen sollen entfernt werden?\n"; cin >> sp; } if ((am-sp)==0) { cout << "Herzlichen Glückwunsch sie haben gewonnen\n"; } if ((am-sp)!=0) { am=am-sp; cout << "Es sind noch " << am << " Münzem im spiel\n"; } if (am>0) { cout << "Computer zieh\n"; cp=am%4; cout << "Der Computer entfernt " << cp << " Münzen\n"; am=am-cp; if (am==0) { cout << "Sie haben verloren\n"; } if (am!=0) { cout << "Es sind noch " << am << " Münzem im spiel\n"; } } if (am==0) { cout << "ENDE\n"; }
} }
aufjeden fall schonmal vielen vielen dank
mit freundlichen grüßen
baunerbääääär
Bearbeitung von 0xdeadbeef:
code- durch cpp-tags ersetzt. Aber schon mal ein guter Anfang
Dieser Post wurde am 25.11.2007 um 13:20 Uhr von 0xdeadbeef editiert.
Mir fallen auf Anhieb zwei Dinge auf: Du benutzt sp uninitialisiert; das erzeugt undefiniertes Verhalten. Ich schlage vor, die Einleseschleife zu einer do-while-Schleife umzuschreiben.
Zweitens, und das ist wahrscheinlich das, was dir hier dazwischenfunkt, in der Behandlung der "Spieler gewinnt"-Situation wird am nicht auf Null gesetzt, d.h. das Spiel geht weiter. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra