Для проекта мне нужно попросить пользователя ввести два числа. Если первый ввод (строка) плохой, программа должна снова запросить строку. Если второй ввод плохой (соответствует), программа должна запросить снова.и для строки, и для совпадений.
Я пытался сделать цикл do while
, но даже после нескольких попыток он не работает так, как я хочу.
У вас есть какие-нибудь подсказки, чтобы сделать этоцикл работает так, как задумано?
ask_number()
- это функция, которая запрашивает число от stdin
, она принимает подсказку в параметре и return
число или 0, если строка не только числовая
check_line()
и check_matches()
проверка правильности ввода.
my_putstr()
является явным.
gamestate
содержит информацию для функций check_
int player_turn(gamestate_t *gamestate)
{
int line = 0;
int matches = 0;
my_putstr("Your turn:\n");
do {
line = ask_number("Line: ");
if (check_line(line, gamestate)) {
matches = ask_number("Matches: ");
}
else {
line = 0;
continue;
}
} while (!check_matches(line, matches, gamestate));
return (0);
}
Если вы ввели неправильный ввод для строки, выход из функции.
Однако, если вы введете хороший номер для строки, то неправильный номер для совпадений будет работать, как и предполагалось, в том числе, если вы введете неверный номер строки.