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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
scrat2013
 Аватар для scrat2013
2 / 2 / 1
Регистрация: 17.10.2013
Сообщений: 33
#1

Cin зацикливание - C++

22.12.2013, 17:31. Просмотров 334. Ответов 5
Метки нет (Все метки)

Здравствуйте, столкнулся с такой проблемой:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int a;
    bool b = true;
    while(b)
    {
        cout << "\nEnter value" << endl;
        cin >> a;
        if(a > 0)
            b = false;
        else
            cout << "\nerror";
    }
    return 0;
Если ввести ноль, то повторяем ввод, но если ввести какой нибудь символ, то программа бесконечно выводит "Enter value", хотя значение a при этом 0. В чем может быть проблема?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2013, 17:31     Cin зацикливание
Посмотрите здесь:

C++ Объект cin и его метод cin.get()
cin.eof и cin.fail C++
C++ использование cin.get вместо cin
getline(cin, str) и cin>> C++
C++ cin.get() и cin.clear()
Зацикливание C++
C++ Cin вместо cin.getline
Cin.get() и cin.getline() C++
Cin.clear cin.ignore C++
Зацикливание C++
C++ Cin.get() зацикливание while()
C++ Cin + cin.getline()

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
George_Amberson
9 / 9 / 10
Регистрация: 13.11.2013
Сообщений: 35
22.12.2013, 17:35     Cin зацикливание #2
Цитата Сообщение от scrat2013 Посмотреть сообщение
Если ввести ноль, то повторяем ввод, но если ввести какой нибудь символ, то программа бесконечно выводит "Enter value", хотя значение a при этом 0. В чем может быть проблема?
Программа должна считывать целочисленную переменную
Цитата Сообщение от scrat2013 Посмотреть сообщение
int a;
, а вы вводите символ.Для этого измените
Цитата Сообщение от scrat2013 Посмотреть сообщение
int a;
на
C++
1
char a;
scrat2013
 Аватар для scrat2013
2 / 2 / 1
Регистрация: 17.10.2013
Сообщений: 33
22.12.2013, 17:40  [ТС]     Cin зацикливание #3
А как мне проверять введена цифра или символ? Мне нужно это для того, чтобы когда пользователь неправильно вводит число в двоичной системе счисления повторить ввод, с числами отличными от 0 или 1 все понятно, но как определить, что был введен еще и символ и повторить ввод? Заранее благодарен.
George_Amberson
9 / 9 / 10
Регистрация: 13.11.2013
Сообщений: 35
22.12.2013, 17:49     Cin зацикливание #4
Цитата Сообщение от scrat2013 Посмотреть сообщение
А как мне проверять введена цифра или символ? Мне нужно это для того, чтобы когда пользователь неправильно вводит число в двоичной системе счисления повторить ввод, с числами отличными от 0 или 1 все понятно, но как определить, что был введен еще и символ и повторить ввод? Заранее благодарен.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char buff[20];
    int a;
    bool b = true;
    while(b)
    {
        cout << "\nEnter value" << endl;
        cin >> buff;
        a = atoi(buff);
        if(a > 0)
            b = false;
        else
            cout << "\nerror";
    }
    return 0;
Не совсем корректный, но в целом рабочий способ
scrat2013
 Аватар для scrat2013
2 / 2 / 1
Регистрация: 17.10.2013
Сообщений: 33
22.12.2013, 17:55  [ТС]     Cin зацикливание #5
Большое спасибо! А как будет выглядеть корректный способ?
George_Amberson
9 / 9 / 10
Регистрация: 13.11.2013
Сообщений: 35
22.12.2013, 18:07     Cin зацикливание #6
Цитата Сообщение от scrat2013 Посмотреть сообщение
Большое спасибо! А как будет выглядеть корректный способ?
Оставляю это вам на размышление
Я описал способ, который знаю, для ваших целей он полностью корректен
Yandex
Объявления
22.12.2013, 18:07     Cin зацикливание
Ответ Создать тему
Опции темы

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