2016-11-09 3 views
0
#include <iostream> 

int main() 
{ 
    int number; 
    using namespace std; 

    cout<<"write number between 1 and 10:"<<endl; 
    cin>>number; 

    if (number<=10 && number>=1) 
    cout<<"correct!"<< endl; 
    else 
    do{ 
     cout<<"wrong! new number:"<<endl; 
     cin>>number; 
    } 
    while(number>10 && number<1); 
} 

Die Schleife nur einmal geht und endet direkt :(ich es endlos gehen wollen, bis die Bedingung erfüllt ist. Ich bin sehr neu in C++, so ist jede Hilfe dankbar :)C++ einfache while-Schleife, die Schleife tut

+5

'Nummer> 10 && Nummer <1' Diese Bedingung kann niemals wahr sein. Es gibt keine Nummer, die gleichzeitig größer als 10 und kleiner als 1 ist. –

Antwort

1

Ihre While-Bedingung ist falsch, es sollte or statt and dort sein (|| statt && in Ihrem Fall). Um solche Fehler zu vermeiden und den Code sauberer zu machen, versuchen Sie es zu vermeiden, Code zu wiederholen, dh Code, der wörtlich oder logisch dasselbe tut. In Ihrem Code Eingabe von cin zweimal und Sie für Zustand überprüfen doppelt so gut:

int number = 0; 
while(true) { 
    cout << "Enter number between 1 and 10:"; 
    cin >> number; 
    if(number >= 1 && number <= 10) 
     break; 
    cout << "invalid number, try again" << endl; 
} 
0

Der während Zustand ist eindeutig nicht korrekt. Eine Variable, die> 10 und < 1 ist, existiert nicht. Versuchen Sie, ein || anstelle der & & im Zustand zuerst.

+0

Sie haben Recht, ich werde bearbeiten. –

0
#include <iostream> int main() { int number; using namespace std; cout<<"write number between 1 and 10:"<<endl; cin>>number; if (number<=10 && number>=1) cout<<"correct!"<< endl; else do{ cout<<"wrong! new number:"<<endl; cin>>number; } while(number<10 && number>1); } 

Ihre solange Bedingung ist nicht richtig und ich habe das behoben. Ihre Bedingung ist nicht einmal erfüllt Aufgrund tun, während die Aufgabe vor der Überprüfung der Bedingung erledigt ist.