Проблема в том, что вы читаете ввод пользователя за пределами l oop (cin>>choice;
), поэтому вы читаете предпочтения пользователя, делаете что-то, затем отображаете меню, но тогда вы не перечитываете выбор пользователя поэтому l oop запускается повторно (вы находитесь в while
l oop) с тем же значением для choice
. Поскольку вы никогда не перечитаете выбор, он никогда не изменится, и ваш l oop никогда не выйдет.
Как отмечает @SamVarshavchik в своих комментариях, у вас есть дополнительная проблема: choice != 'Q' || choice != 'q'
всегда истина - например, если choice=='Q'
, то choice != 'q'
истинно, поэтому ||
истинно. Так что вам также придется это исправить (изменив ||
на &&
или сделав tolower
и проверив только строчные буквы или что-то подобное, это должно исправить).