do{
cout << "your number"; cin >> z;
if (z > 4){
cout << "invalid answer" << endl;}
else if (z == 4){
cout << " no" << endl;}
else {
cout <<"great!" << endl; }
} while (z != 3, 2, 1);
}
В моем oppinion это: воспитывать "ваш номер" до тех пор, пока z не будет 3 или 2 или 1? Что не так?'
while (z != 3, 2, 1);
В то время как ваше состояние не так, оно должно быть:
while (z != 3 && z != 2 && z != 1);
Если вы используете запятые, он будет вычислять (вычислять) все выражения, разделенные ими, и будет использовать последнее выражение.
В этом случае
(z != 3, 2, 1)
Он будет оценивать z! = 3, затем 2 и, наконец, будет использовать 1, ваше время будет выглядеть так:
while(1);
Это бесконечный цикл.
Проблема может падать на условие while. Возвращаемое значение вашего выражения "z != 3, 2, 1"
будет оцениваться как "1", что означает true в C++. Таким образом, будет бесконечный цикл. Попробуйте переписать cond. эксп. как "z != 3 || z != 2 || z != 1"
.