0 / 0 / 0
Регистрация: 19.03.2022
Сообщений: 13
1

Ошибка при проверке значений на ввод

25.03.2022, 06:36. Показов 264. Ответов 2
Метки нет (Все метки)

Пытаюсь реализовать проверку ввода данных.Мой код бесконечно зацикливается,при попытки ввести строку char вместо int (просто пропускается объект ввода cin при повторном использовании при вводе char).
Как игнорировать символы char при вводе и просить пользователя повторить ввод

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int hours;
    do
    {
        //очистка всех флагов
        cin.clear();
 
        cout << "enter the hours: "; 
        cin >> hours;
 
        //если ошибка ввода или неправильный диапазон значения
        if (cin.fail() || hours>24 || hours<0)
        {
            cerr << "enter the hours int the range from 0 to 23" << endl;
            //установка флага с ошибкой
            cin.clear(ios::failbit);
            cin.ignore(1, '\n');
        }
        //цикл пока существует флаг с ошибкой ввода
    } while (cin.fail());
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2022, 06:36
Ответы с готовыми решениями:

Сайт CodeWars при проверке решения выдаёт ошибку, при проверке в VisualStudio ошибки нет
Задача написать метод,который будет проверять порядок круглых скобок. Написал код, проверил в...

Вывод информации при проверке идентичности значений в нескольких ячейках/столбцах
Здравствуйте, Подскажите как правильно написать формулу по сабжу. На 2 листе есть база с...

Ошибка при проверке
∞ Ʃ ((-1)^n) *((x^n)/((2*n)!)) n=0 an=((-1)^n) *((x^n)/((2*n)!)) an-1=((-1)^n-1)...

При проверке типа вводимых данных возникает ошибка при вводе иррациональных чисел
На просторах интернета я нашел следующий цикл,отвечающий за проверку типов вводимых данных: while...

При установке iRedMail ошибка при проверке md5sum
При установке iRedmail сервера на Linux появляется ошибка при выполнении команд: # cd...

2
С чаем беда...
Эксперт CЭксперт С++
9993 / 5345 / 1461
Регистрация: 18.10.2014
Сообщений: 12,870
25.03.2022, 06:57 2
Цитата Сообщение от MyRainbowDay Посмотреть сообщение
Как игнорировать символы char при вводе и просить пользователя повторить ввод
При помощи cin.ignore. Вы же сами уже используете cin.ignore. Почему у вас первый параметр - 1? Почему именно 1?
0
0 / 0 / 0
Регистрация: 19.03.2022
Сообщений: 13
25.03.2022, 07:06  [ТС] 3
TheCalligrapher, по поводу cin.ignore() просто забыл поменять,смотрел как все это работает
А насчет ios::failbit я же снимаю флаг с ошибкой уже после проверки(5 строка).В учебнике прочитал,что cin.clear(ios::failbit) наоборот устанавливает флаг
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2022, 07:06
Помогаю со студенческими работами здесь

Ошибка при проверке массива
sf::String *TileMap = new sf::String; for (size_t i = 0; i &lt; 15; i++) { TileMap = &quot; ...

Ошибка при проверке задания
Задание: Пафнутий безумно (да он слегка безумен (как и большинство наших знакомых (да, мы любим...

Ошибка при проверке метаданных
После создания формы появилась такая ошибка. Кто-то сталкивался? или посоветуете переделать все...

Ошибка при проверке на существование
Вот код: if (mysql_query(&quot;SELECT * FROM `&quot;.$db_prefix.&quot;sites` WHERE `link` = `&quot;.$url_site.&quot;`&quot;))...

Ошибка 216 при проверке
Выдает 216-ю ошибку,не могу понять,в чем причина. uses crt; type TElint = byte; TElelem...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru