Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проблемы с кодом на C++

Иван Чистяков Ученик (94), открыт 2 дня назад
 void battle()  
{
cout << "Выберите зону атаки. 1 - голова. 2 - корпус. 3 - ноги." << endl;
wchar_t a;
wcin >> a;
if (a < 48 or a > 51)
{
while (a < 48 or a > 51)
{
cout << "Введено некорректное число!" << endl;
wcin >> a;
}
}
else
{
cout << "!";
}
}
Код рабочий, проверяет на наличие в переменной чего угодно кроме цифр 1, 2, 3.
Всё работает, но если ввести более 1 цифры, то он будет писать "Введено некорректное число!" для каждой цифры. Как исправить?
2 ответа
Moon Late Гуру (3769) 2 дня назад
Вообще, подобные штуки делаются при помощи оператора выбора switch:
 switch(code) {
case '1': cout << "голова" << endl; break;
case '2': cout << "корпус" << endl; break;
case '1': cout << "ноги" << endl; break;
default:
cout << "Хрен знает вкуда" << endl; break;
}
Сергей Гений (60403) 2 дня назад
Если вас не интересует как работает поток ввода, как из отдельных символов собираются числа или слова, как компьютеру понять, окончен ввод или будет еще и т.д. и т.п...
 { 
setlocale(0, "");
int a;
cout << "введите число от 1 до 3" << endl;
do
{
a = 0; //начальное заведомо неправильное число
cin >> a; //ввод числа
cin.clear(); //на случай ошибки ввода
if (cin.rdbuf()->in_avail()) cin.ignore(cin.rdbuf()->in_avail()); //удалить все лишнее из потока
} while ((a<1||a>3) && cout << "Ошибка, введите еще раз.\n");
cout << "Вы ввели число " << a;
}
Похожие вопросы