Ваш тест на правильный выбор не работает, потому что ||
работает не так. Что вам нужно, это что-то вроде:
while (user_guess != "a" && user_guess != "b" && user_guess != "c" && user_guess != "d"
user_guess != "A" && user_guess != "B" && user_guess != "C" && user_guess != "D") {
Кроме того, нет никакого вреда при вызове toupper()
для чего-то, что не является символом нижнего регистра. Так что вы можете просто сделать:
if (toupper(user_guess) != answers[x]) {
Если вы преобразуете user_guess
в верхний регистр сразу после того, как прочитаете его из cin
, тогда вы можете сократить тест «правильное предположение» (только проверяя ответы в верхнем регистре) и пропустить toupper()
из теста против answers[x]
.