Member 12631753 Ответов: 1

Получить цикл do while, чтобы снова получить вход? (С++)


Привет, я пытаюсь создать программу, основанную на некоторых проблемах для начинающих c++ онлайн. Я столкнулся с проблемой, пытаясь сделать это, и мне нужна помощь

Всякий раз, когда я прохожу через цикл do while один раз, он не побуждает меня вводить данные снова?
Спасибо

#include <iostream>
#include <string>

using namespace std;
int main() {
	string drinkChosen;
	string coke = "coke";
	string fanta = "fanta";
	string pepsi = "pepsi";
	string sprite = "sprite";
	string drpepper = "drpepper";
	string water = "water";
	int x;

	do {
	std::cout << "choose which beverage you would like" <<std::endl << "Coke, Fanta, Pepsi, Sprite or drpepper" << std::endl;
	

	getline(std::cin, drinkChosen);

		if (drinkChosen == coke) {

			std::cout << "you have chosen coke" << std::endl;

		}

		else if (drinkChosen == fanta) {

			std::cout << "you have chosen fanta" << std::endl;

		}

		else if (drinkChosen == pepsi) {

			std::cout << "you have chosen pepsi" << std::endl;

		}
		else if (drinkChosen == sprite) {

			std::cout << "you have chosen sprite" << std::endl;

		}
		else if (drinkChosen == drpepper) {

			std::cout << "you have chosen pepper" << std::endl;

		}
		else if (drinkChosen == water) {

			std::cout << "Please, you know you want a nice drink" << std::endl;

		}
		else {

			std::cout << "please choose again" << std::endl;
		}
		
		std::cout << "Please press 1 to confirm or zero to start again" << std::endl;
		std::cin >> x;
		
		
	} while (x == 0);

	
	
	

	system("pause");
	return 0;
}


Что я уже пробовал:

Я попытался обойти "струнный дринкчосен"
Я также возился с условиями цикла while
Я также искал этот сайт и переполнение стека

1 Ответов

Рейтинг:
10

Richard MacCutchan

Это происходит потому, что во входном потоке все еще есть символ(ы) конца строки после ввода 0 или 1. измените свой код следующим образом:

std::cout << "Please press 1 to confirm or zero to start again" << std::endl;
std::cin >> x;
cin.get();

Вы также должны добавить код для преобразования входных строк в нижний регистр для ваших тестов на равенство.


CPallini

5.