Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

22.12.2013, 17:31. Просмотров 391. Ответов 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. В чем может быть проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2013, 17:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Cin зацикливание (C++):

Cin.get() зацикливание while() - C++
Вот такой вот код... cout &lt;&lt; &quot;Введите размер 1-й матрицы: &quot;; while (!(cin &gt;&gt; N1 &gt;&gt; M1)) { system(&quot;cls&quot;); cin.clear(); ...

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync - C++
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная &quot;защита от дурака&quot; на ввод. Не пойму предназначение cin.get() !=...

Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear() - C++
Такая проблема: сдаю в вуза лабораторные по программированию, писал все сам, до этого c++ не изучал, поэтому возникали некоторые проблемы....

Метод getline(cin, m) не срабатывает без cin.ignore() / Ревью кода - C++
Почему в моем случае getline(cin, m) не срабатывает без cin.ignore() ? Если по коду есть какие-нибудь замечания, то просьба написать что не...

Продемонстрировать различие между вводом с помощью cin.Get и cin.Getline с тремя параметрами - C++
Нужна помощь. Задача продемонстрировать различие между вводом с помощью cin.get и cin.getline с тремя параметрами, как из потока достать...

Для чего в код вводится cin.ignore после того, как cin>> уже сработало? - C++
Доброго времени суток! Просматриваю простой код. Вводится строка типа string: фунты и дюймы Затем значения переводится в типы int и...

5
George_Amberson
9 / 9 / 10
Регистрация: 13.11.2013
Сообщений: 35
22.12.2013, 17:35 #2
Цитата Сообщение от scrat2013 Посмотреть сообщение
Если ввести ноль, то повторяем ввод, но если ввести какой нибудь символ, то программа бесконечно выводит "Enter value", хотя значение a при этом 0. В чем может быть проблема?
Программа должна считывать целочисленную переменную
Цитата Сообщение от scrat2013 Посмотреть сообщение
int a;
, а вы вводите символ.Для этого измените
Цитата Сообщение от scrat2013 Посмотреть сообщение
int a;
на
C++
1
char a;
0
scrat2013
2 / 2 / 1
Регистрация: 17.10.2013
Сообщений: 33
22.12.2013, 17:40  [ТС] #3
А как мне проверять введена цифра или символ? Мне нужно это для того, чтобы когда пользователь неправильно вводит число в двоичной системе счисления повторить ввод, с числами отличными от 0 или 1 все понятно, но как определить, что был введен еще и символ и повторить ввод? Заранее благодарен.
0
George_Amberson
9 / 9 / 10
Регистрация: 13.11.2013
Сообщений: 35
22.12.2013, 17:49 #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;
Не совсем корректный, но в целом рабочий способ
0
scrat2013
2 / 2 / 1
Регистрация: 17.10.2013
Сообщений: 33
22.12.2013, 17:55  [ТС] #5
Большое спасибо! А как будет выглядеть корректный способ?
0
George_Amberson
9 / 9 / 10
Регистрация: 13.11.2013
Сообщений: 35
22.12.2013, 18:07 #6
Цитата Сообщение от scrat2013 Посмотреть сообщение
Большое спасибо! А как будет выглядеть корректный способ?
Оставляю это вам на размышление
Я описал способ, который знаю, для ваших целей он полностью корректен
0
22.12.2013, 18:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2013, 18:07
Привет! Вот еще темы с ответами:

Объект cin и его метод cin.get() - C++
Вот код программы: #include &lt;iostream.h&gt; #pragma hdrstop ...

Отличие функции cin.get и cin.getline - C++
Добрый день! Изучаю функции get и getline, сказано, что они отличаются тем, что функция get считывает символ разрыва строк и оставляет...

cin.getline и cin.ignore - C++
Есть кусок кода в котором не могу разобраться. Если cin.ignore() есть, то теряется первый вводимый символ начиная со второго входа в for....

Cin.clear cin.ignore - C++
Как использовать cin.clear и cin.ignore?


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

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

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