Как предотвратить создание нового значения rand()
из cin
? Я создаю программу, и если пользователь не вводит правильный ввод, srand()
все еще сохраняет свое значение, пока пользователь не введет правильное значение.
Как настроить мои циклы для этого?
Например, если я ищу только числа между 1 - 6. Если, например, значение rand()
равно 994, если пользователь вводит букву A, тогда значение rand() по-прежнему равно 994, пока не будет введен номер.
while(user input is a number){
if(rand()%6 == 1){
if(userNumber == 1){
cout << "Your roll is 1. Please roll again: "
cin >> userRoll;
else{
cout << "Invalid roll. Please roll again: "
cin >> userRoll;
}
}
else if(rand()%6 == 0){
if(userNumber == 1){
cout << "Your roll is Blue. Please roll again: "
cin >> userRoll;
}
else{
cout << "Invalid roll. Please roll again: "
cin >> userRoll;
}
}
}
поэтому srand имеет два разных пути, но если roll недействителен, я хотел бы, чтобы значение rand оставалось таким же, чтобы оно все равно находилось в пути userNumber == 1 или userNumber == 0.
Сохраните возврат rand()
и используйте rand()
только один раз:
int some_random_number = rand();
while(user input is a number){
if(some_random_number % 6 == 1){
// ... snip ...
}
else if(some_random_number % 6 == 0){
// ... snip ...
}
}
Пока вы исправляете свой код, посмотрите на rand()
считается вредным.