![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 22.09.2017
Сообщений: 45
|
![]()
В общем то ли я дурак,то ли лижи не едут, есть цикл do while который должен проверять ввел ли человек число и если обнаруживает что-то другое повторять запрос ввода,до тех пор пока не получит число, но он почему-то зацикливается бесконечно если получает что-то помимо числа
int x; do{ cout<<"Введите число"<<endl; cin>>x; }while(!cin.good()); вот в чем проблема? возможно я неправильно понимаю как работает cin.good(), по идее он смотрит что ты ввел и если ты ввел тип отличный от запрашиваемого то выдает false если типы совпадают то true |
![]() |
![]() |
![]() |
#2 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
![]() Цитата:
Скорее всего, нада в начале цикла (после do сразу) добавить сброс битов ошибки. Код:
Последний раз редактировалось alexzk; 12.10.2017 в 18:15. |
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 22.09.2017
Сообщений: 45
|
![]()
bool test=true;
do { cout << "Введите число:" << endl; cin>>op1; if ( !(test=cin.good()) ) cout << "Вы ввели не число!" << endl; cin.clear() ; cin.ignore(numeric_limits<streamsiz e>::max(),'\n') ; } while(!test); Да уже разобрался,вот такую фигню наворатил,оставлю тут,может кому поможет |
![]() |
![]() |
![]() |
#4 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
![]() |
![]() |
![]() |