2017-02-28 6 views
-3

Ich bin ganz neu in der Programmierung mit C++ und nehme meinen ersten Kurs. Dies soll ein sehr einfaches Programm sein, das Ziel ist, dass das Programm eine Zahl aus dem Eingabestrom liest und nicht anzeigt. Als nächstes bitten Sie den Benutzer, die Nummer zu erraten; gib ihnen bis zu drei Vermutungen. Die verschiedenen Ausgaben sollten angezeigt werden, wenn der Benutzer niemals richtig rät, bei der ersten Schätzung, zweiten Schätzung und dritten Schätzung richtig rät.Erstellen eines Ratespiels in C++

I am thinking of a number between 1 and 10. 
Can you guess it within 3 guesses? 
Enter guess #1: 6 
Enter guess #2: 7 
Enter guess #3: 8 
You lose! The number was 5 

I am thinking of a number between 1 and 10. 
Can you guess it within 3 guesses? 
Enter guess #1: 66 
Please try again Enter guess #1: 67 
Please try again Enter guess #1: 68 
Please try again Enter guess #1: 6 
Enter guess #2: 7 Enter guess #3: 8 
You lose! The number was 5 

Das Problem, das ich habe, wenn die Vermutung ist entweder richtig oder falsch wird es kontinuierlich drucken Sie verlieren: Die Ausgänge sollten so etwas wie lesen! Die Nummer war ... oder wenn die Vermutung richtig ist, macht sie das etwas. Auch wenn es außerhalb von 1 und 10 erraten wird, wird es kontinuierlich ausgedruckt. Bitte versuchen Sie es erneut, genauso wie die Sie verlieren Aussage. Hier ist der Code, den ich bisher habe, ich habe nur Code für die erste Schätzung erstellt, bis es richtig funktioniert.

Jeder Rat würde sehr geschätzt werden.

#include <iostream> 
#include <cstdlib> 
#include <ctime> 
using namespace std; 
int main() { 
    int guess; 
    int guess2; 
    int guess3; 
    int ran; 
    srand(time(0)); 

    cout << "I am thinking of a number bewteen 1 and 10." << endl; 
    cout << "Can you guess it within 3 guesses?" << endl; 

    cin >> guess; 
    cin >> guess2; 
    cin >> guess3; 

    ran = ((rand() % 9) + 1); 

    cout << ran << endl; //remove*********** 

    cout << "Guess #1: " << guess << endl; 

    while(guess < 1 || guess > 10) { 
     cout << "Please try again" << endl; 

      } 
    while(guess != ran) { 
     cout << "You lose! The number was " << ran << endl; 
    } 

    while(guess == ran) { 
     cout << "You win! The number was " << ran << endl; 

    } 

    return 0; 
    } 
+0

'while (erraten! = RAN)' wird fortgesetzt, bis 'Vermutung == ran'. Es gibt nichts im Körper der Schleife, das entweder "raten" oder "ran" ändert. Dies nennen wir eine Endlosschleife. Wahrscheinlich willst du 'if' anstelle von' while'. – Chad

+0

Danke, ich habe mich zu if-Statements geändert und es funktioniert besser, aber wie kann ich aufhören, wenn es entweder beim ersten Raten richtig rät, dann beim zweiten rät, um richtig zu raten, und wenn es außerhalb von 1 und 10 ist mit Schätzung 1? – sdfg

Antwort

0

Da weder guess noch ran Änderungen in der Schleife, die "You lose!" druckt, wird die Schleife nie enden. Es ist mir nicht klar, warum das überhaupt eine Schleife ist.

0

Verwenden Sie eine for-Schleife anstelle von 3 Schätzvariablen. Verwenden Sie auch if statt while. int main() {

int guess, ran, i; 

srand(time(0)); 

cout << "I am thinking of a number bewteen 1 and 10." << endl; 
cout << "Can you guess it within 3 guesses?" << endl; 

ran = ((rand() % 9) + 1); 

cout << ran << endl; //remove*********** 

for(i=0;i<3;i++) 
{ 
cin >> guess; 
cout << "Guess #1: " << guess << endl; 

if(guess < 1 || guess > 10) 
    cout << "Please try again" << endl; 

if(guess == ran) 
    break; 

} 

if(guess != ran) 
    cout << "you lose!"; 
if(guess == ran) 
cout << "you win!"; 

return 0; 
}