Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2015, 23:33   #1
Сандор Клиган
Новичок
Джуниор
 
Регистрация: 24.10.2015
Сообщений: 1
По умолчанию Не работает проверка ввода на C++

Если ввести, например, несколько букв, то начнётся бесконечный цикл. В чём ошибка?
Код:
#include<iostream>
using namespace std;

int main(void)
{
	int choice;

	while (1)
	{
		cin >> choice;

		if (cin.fail() || choice < 1 || choice > 5)
		{
			cout << "\nНеверно введено значение, введите его ещё раз.\n\n? ";
			cin.clear();
			cin.sync();
			continue;
		}

		switch (choice)
		{
		case 1:
			cout << "1\n";
		}

		break;
	}

	return 0;
}
Сандор Клиган вне форума Ответить с цитированием
Старый 25.10.2015, 05:47   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Потому что компьютер не сможет считать эти буквы (ему то нужны цифры, т.к. вы вводите целое число). Он установит флажок ошибки в cin и cin.fail будет всегда возвращать true. Поэтому условие:
Код:
if (cin.fail() || choice < 1 || choice > 5)
будет всегда истинным, а значит цикл вечным.

Чтобы исправить это надо либо условие изменить, либо считывать как-то символ с cin (т.к. его содержимое от одной итерации цикла к другой не меняется если там попадется буква)
rrrFer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка ввода Mixasnt JavaScript, Ajax 4 23.01.2014 21:07
Форматирование ввода в колонку dataGridView и проверка правильности ввода tumanovalex C# (си шарп) 1 31.05.2011 19:56
Проверка ввода Darth_Programmeder Помощь студентам 6 14.04.2010 16:19
Проверка ввода Paul_AG Общие вопросы C/C++ 16 11.06.2009 16:56
Проверка ввода Panda Помощь студентам 2 08.07.2008 19:23