2017-09-26 4 views
0

Ich schreibe ein C++ - Programm, das 2 Ausgaben eines Mannes anzeigt, damit es so aussieht, als würde er springen, wenn Sie Enter drücken. Wenn Sie 'q' eingeben, soll das Programm anhalten. Das ist soweit ich gekommen bin.Drücken Sie die Eingabetaste, um fortzufahren oder q, um zu beenden C++

// Dieses Programm zeigt einen springenden Mann an.

umfassen

umfassen

using namespace std;

int main() {
Zeichenfolge string user_input;

do 
{ 
    cout << endl << endl << endl << endl << endl << endl << endl 
     << endl << endl << endl << endl << endl << endl << endl 
     << endl << endl << endl << endl << endl << endl << endl 
     << endl << endl << endl << endl << endl << endl; 

    cout << " O" << endl; 
    cout << " /|\\" << endl; 
    cout << " ()" << endl; 
    cout << "------------------------------------------------------------" << endl; 

    cout << "Press ENTER to continue or enter q to quit:"; 

    getline(cin, user_input); 

    cout << endl << endl << endl << endl << endl << endl << endl 
     << endl << endl << endl << endl << endl << endl << endl 
     << endl << endl << endl << endl << endl << endl << endl 
     << endl << endl << endl << endl << endl << endl; 

    cout << " \\O/" << endl; 
    cout << " | " << endl; 
    cout << "/\\" << endl << endl; 
    cout << "------------------------------------------------------------" <<endl; 
    cout << "Press ENTER to continue or enter q to quit:"; 
} while(getline(cin, user_input)); 

return 0; 

}

Ich habe stundenlang versucht, und ich kann immer noch nicht herausfinden, wie das Programm zu stoppen, wenn Sie q eingeben.

Ich habe versucht, Variationen der while-Anweisung wie

während (getline (cin, USER_INPUT) & & USER_INPUT = 'q')

aber es funktioniert nicht. Jede Hilfe würde sehr geschätzt werden.

Antwort

0

Dies scheint wie Hausaufgaben, das bedeutet, dass dies nicht der Ort ist, fragen. Aber ich würde annehmen, dass es etwas damit zu tun hat, dass es keine if-Anweisungen gibt, die den vom Benutzer angegebenen Wert überprüfen. Und Ihr anderer Versuch scheiterte, weil getline in diesem Fall nicht nur das 'q', sondern die gesamte Newline bekommt. Hier ist mehr Getline keeps on getting newline character. How can I avoid this?. Du könntest die Prüfung ersetzen, die du versuchtest mit (getline (cin, string) & & string! = "Q \ n") Edit: Ich wollte das ein Kommentar sein, aber es fehlt an Reputation.

+0

Dies ist keine Hausaufgaben, ich versuche nur, C++ - Programmierung zu lernen und bin bei den frühen Aktivitäten in dem Buch, von dem ich lerne. Vielen Dank für Ihre Hilfe. –

+0

Ok cool, was du vielleicht machen willst ist Refactoring deine Schleife, so dass die Überprüfung nicht so ist, während (lesen von cin und check) eher wie: {loop code ..... getline (cin, user_input); bool Eingabe = user_input!= "q \ n";} while (Eingabe) "\ n" ist das Escape-Zeichen für neue Zeile und druckt dasselbe wie endl, ist aber in der Zeichenfolge " – JoyStickFanatic

+0

" enthalten. Ich bin mir nicht sicher, was du hier meinst vielleicht genauer beschreiben? –

0

Also habe ich es heute Morgen herausgefunden und dachte, ich würde es für die Zukunft weitergeben.

umfassen

umfassen

using namespace std;

int main() {

Zeichenfolge USER_INPUT; int Zähler = 0;

do 
{ 
    if (counter % 2 == 0) 
    { 
     cout << endl << endl << endl << endl << endl << endl << endl 
     << endl << endl << endl << endl << endl << endl << endl 
     << endl << endl << endl << endl << endl << endl << endl 
     << endl << endl << endl << endl << endl << endl; 

     cout << " O" << endl; 
     cout << " /|\\" << endl; 
     cout << " ()" << endl; 
     cout << "------------------------------------------------------------" << endl; 
    } 

    if (counter % 2 != 0) 
    { 
     cout << endl << endl << endl << endl << endl << endl << endl 
     << endl << endl << endl << endl << endl << endl << endl 
     << endl << endl << endl << endl << endl << endl << endl 
     << endl << endl << endl << endl << endl << endl; 

     cout << " \\O/" << endl; 
     cout << " | " << endl; 
     cout << "/\\" << endl << endl; 
     cout << "------------------------------------------------------------" <<endl; 
    } 

    cout << "Press ENTER to continue or enter q to quit:"; 
    getline (cin, user_input); 

    if (user_input == "q") 
{ 
    return 0; 
} 
counter = counter + 1; 
} while (user_input != "q"); 
return 0; 

Wenn die Schleife wiederholen, durch int Zähler bezeichnet, die eine jede Schleife addiert, zeigt das Programm ist auch der Mann stehen. Dann erscheint die Aufforderung "Drücken Sie ENTER um fortzufahren oder 'q' um zu beenden:" wird angezeigt. Es geht weiter, wenn der Benutzer ENTER, getline (cin, user_input) eingibt. Wenn der Benutzer 'q' eingibt, bricht die Schleife ab (Rückgabe 0;). Wenn die Schleife wiederholt wird, wenn der Benutzer ENTER drückt, ist der Zähler nun ungerade und das Programm zeigt den Mann, der springt.

Verwandte Themen