for( a; b; c ) { body; }
- это то же самое (за исключением области действия), что и
a;
while (b) {
body;
c;
}
Давайте сделаем это для вашего кода:
bool b_valid=false;
while (b_valid = false) { // uh-oh
Нам не нужно идти дальше.Это задание, а не сравнение.Он устанавливает b_valid
в false и затем проверяет, верно ли это.Поскольку этого никогда не происходит, цикл никогда не запускается.
Но то, что вы действительно хотели, это цикл do
/ while
:
bool b_valid;
do {
cin >> n_grade;
if ( n_grade>100 || n_grade<0 ) {
cout << "Invalid grade: Re-enter a number between 0-100 : " << endl;
// let the next pass through the loop re-read n_grade
b_valid = false;
}
else {
b_valid = true;
}
} while (!b_valid);
Цикл do-while всегда выполняетсяхотя бы один раз.