Как предотвратить создание нового rand () после cin в c?

0

Как предотвратить создание нового значения 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.

  • 0
    Пожалуйста, покажите, что вы пытаетесь сделать.
  • 0
    Рэнд и Син абсолютно не связаны. Пожалуйста, опубликуйте код, который иллюстрирует вашу проблему.
Показать ещё 5 комментариев
Теги:

1 ответ

1

Сохраните возврат 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() считается вредным.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню