Форум программистов, компьютерный форум CyberForum.ru

Зацикливается вывод в функции - C++

Восстановить пароль Регистрация
 
Богдан Корниено
 Аватар для Богдан Корниено
9 / 9 / 1
Регистрация: 24.03.2011
Сообщений: 152
04.09.2012, 21:38     Зацикливается вывод в функции #1
Доброй ночи. Написал простую функцию для ввода целого числа с клавиатуры.
C++
1
2
3
4
5
6
7
8
9
10
11
12
int input_number()
{
    int n;
    do 
    {
        std::cout << "Enter num: ";
        std::cin >> n;
        std::cout << std::endl;
    } while( std::cin.fail() );
    
    return n;
}
Если вводить число, все работает нормально. А если ввести символ, то строка "Enter num: " зацикливается до бесконечности. Не могу понять. Как такое возможно. Ведь по идее должна выполняться инструкция std::cin...
Помогите разобраться.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2012, 21:38     Зацикливается вывод в функции
Посмотрите здесь:

программа зацикливается C++
C++ Почему зацикливается?
C++ Не нормально зацикливается Do
Multimap зацикливается C++
C++ Зацикливается программа
Зацикливается стек C++
C++ Вычислить и вывести на экран значения заданной функции. Программа зацикливается
C++ Программа зацикливается

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
04.09.2012, 22:01     Зацикливается вывод в функции #2
failbit надо сбросить чтобы выполнялась
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int input_number()
{
    int n;
    do
    {
        std::cout << "Enter num: ";
        std::cin >> n;
        std::cin.clear();
        std::cout << std::endl;
    } while( std::cin.fail() );
 
    return n;
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.09.2012, 22:15     Зацикливается вывод в функции #3
Цикл для чего в функции? fail() при ошибке возвращает true (а не false), поэтому при ошибке нет выхода из цикла. Если хотите, чтобы при ошибке был выход из цикла:
C++
1
2
3
4
5
6
7
int n;
    do
    {
        std::cout << "Enter num: ";
        std::cin >> n;
        std::cout << std::endl;
    } while( !std::cin.fail() );
Yandex
Объявления
04.09.2012, 22:15     Зацикливается вывод в функции
Ответ Создать тему
Опции темы

Текущее время: 00:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru