Putting ein Schalter im inneren der do...while
Also ich habe eine do... while-Anweisung soll das zu wiederholen, es sei denn, der Benutzer eines von vier Dingen. Diese vier Dinge haben Sie sich eine Auszeit und setzen Sie die variable, die steuert, die während zu wahren, wobei der Standardwert ist false. Wenn der Benutzer nicht geben Sie eine der vier Antworten, die variable wird bleiben, false, sollte der do...while-start wieder. Tut es das nicht.
#include <string>
#include <iostream>
using namespace std;
int main()
{
int q5_answer = 1;
int q5_answerU;
int total_score;
bool q5_valid = false;
//Question_5:
do
{
cout << "Question 5 (#1 is correct)" <<endl;
cout << "1.) Answer 1" <<endl;
cout << "2.) Answer 2" <<endl;
cout << "3.) Answer 3" <<endl;
cout << "4.) Answer 4" <<endl;
cin >> q5_answerU;
switch (q5_answerU)
{
case 1:
cout << "Correct!" <<endl;
q5_valid = true;
(total_score = total_score + 1);
break;
case 2:
cout << "Incorrect" <<endl;
q5_valid = true;
break;
case 3:
cout << "Incorrect" <<endl;
q5_valid = true;
break;
case 4:
cout << "Incorrect" <<endl;
q5_valid = true;
break;
default:
cout << "Invalid answer" <<endl;
}
} while (q5_valid = false);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Zustand im inneren der
while
ist ein "versehentliches" Zuweisung, kein Vergleich. Es Lesen musswhile (q5_valid == false)
oder mehrere idiomatischewhile (!q5_valid)
.while(false == q5_valid)
-- dies funktioniert auch für andere tests als boolean zu (42!=answer
) und der compiler wird automatisch abfangen einer zufälligen Zuordnungif (!condition
).Dies ist nicht ein boolescher Ausdruck:
Setzt es die variable q5_valid zu
false
und gibt auchfalse
. Ersetzen Sie es durch:oder
Sind die gleichen. Die erstere ist besser für die Lesbarkeit.