Frage zu do - while Loop
-
Hallo Zusammen
bin ganz neu hier und habe erst vor ein paar Tagen mich mit C++ beschäftigt und "gelernt"...
Um ein bisschen rein zu kommen habe ich ein Quiz erstellt, das ganze funktioniert auch soweit ! nur ein kleines Problem habe ich....Ich habe 3 Fragen erstellt, sollte man die falsche Antwort geben, kann man durch 'y' nochmal versuchen, allerdings die selbe Frage, wie kann ich den do-while Loop einstellen, das man wieder ganz von vorne anfängt? - bei Frage 1 ?
Freu mich auf eure Vorschläge bzw. auf allg. Verbesserungen am Code, da ich glaube noch recht umständlich geschrieben habe als blutfrischer Anfänger

#include <iostream> #include <string> using namespace std; int main () { string por ("lissabon"), spa ("madrid"), fra ("paris"); string por1, spa1, fra1; char neu = 'y'; do { cout << "Wie heisst die Hauptstadt von Portugal ? \n" << endl; cin >> por1; if (por == por1) { cout << "BRAVO !" << endl; getchar(); do { cout << "Wie heisst die Hauptstadt von Spanien ? \n" << endl; cin >> spa1; if (spa == spa1) { cout << "BRAVO !" << endl; getchar(); do { cout << "Wie heisst die Hauptstadt von Frankreich ? \n" << endl; cin >> fra1; if (fra == fra1) { cout << "BRAVO !" << endl; getchar(); } else cout << "Das war leider falsch! Moechten Sie neu starten (y/n) ? \n)" << endl; cin >> neu; } while (neu !='n'); } else cout << "Das war leider falsch! Moechten Sie neu starten (y/n) ? \n)" << endl; cin >> neu; } while (neu !='n'); } else cout << "Das war leider falsch! Moechten Sie neu starten (y/n) ? \n)" << endl; cin >> neu; } while (neu !='n'); }
-
Willkommen im Forum!
Ich verstehe nicht ganz: soll er nur die falsch beantwortete Frage wiederholen oder den ganzen Quiz erneut starten?
-
stand jetzt, wiederholt er die falsch beantwortete Frage...
Ich möchte allerdigns das er wieder bei Frage 1 anfängt

habe auch schon bissle im netz gesucht aber leider nichts gefunden was passen könnte
-
Pseudocode als Ansatz:
while(true) { frage1 stellen Ergebnis ausgeben (richtig/falsch) cin.ignore(cin.rdbuf()->in_avail()); //leere alle Zeichen im Puffer if (getchar() == 'y') continue; frage2 stellen Ergebnis ausgeben cin.ignore(cin.rdbuf()->in_avail()); if (getchar() == 'y') continue; ... letzte_frage_stellen() if (eingabe == richtigeAntwort) { cout << "Sie haben gewonnen!\n"; break; } }Der Vorschlag ist aber auf dein Konzept zugeschnitten und müsste komplett umgebaut werden, wenn die Fragen z.B. in einer Schleife und nicht jede einzeln gestellt werden.
Edit: ein paar Tipps meinerseits:
- using namespace std; nicht global deklarieren
- zum Speichern der Eingabe kannst du auch dieselbe Variable verwenden (wird jedes Mal überschrieben)