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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
#1

Оператор cin и ошибка - C++

09.03.2012, 18:30. Просмотров 1816. Ответов 10
Метки нет (Все метки)

Вот у меня есть такая прога она считивает цифру если она входит в диапазон пишет Ок
и завершает програму
если нет то спрашивает еще раз
Работает всё хорошо но если ввести букву оно начинает бесконечно писать об ошибке...
Почему так? почему оно не просит еще раз ввод а просто делается цикл?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2012, 18:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Оператор cin и ошибка (C++):

Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор * - C++
Помогите в следующем: Для класса шаблона следует перегрузить оператор присваивания, конструктор копирования, бинарный оператор суммы «*»,...

Оператор cin в одну строку - C++
Подскажите как организовать вывод через cin в одну строку на примере: #include <iostream> #include <conio.h> using namespace...

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

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

оператор cin. Как вывести информацию. - C++
Я написал программу: #include<iostream.h> void main(void) { int t; cout<<"введите ваше любимое число и нажмите enter:"; ...

Оператор std::cin выдает непредсказуемый результат - C++
Здравствуйте! Пожалуйста, укажите на мою ошибку! Вот собственно, задание: "Напишите функцию, которая по двум объектам, price и weight,...

10
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
09.03.2012, 18:31 #2
буфер почистить
0
Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
09.03.2012, 18:46  [ТС] #3
всмысле?

Добавлено через 12 минут
Вот код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<conio.h>
#include<iostream>
usingnamespace std;
int main()
{
int a,e=1;
while (e==1)
{
cout << "Please enter number(0-9)\n";
cin >> a;
if (a<0 || a>9)
{
cout << "Error!\n\n\n"; 
e=1;
} 
else 
{
cout << "Ok!";
e=0;
} 
}
getch();
}
0
Drum and C++
12 / 14 / 0
Регистрация: 03.08.2011
Сообщений: 213
09.03.2012, 18:58 #4
ну ты даешь надо юзать char а не int и тогда ошибки не будет
0
Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
09.03.2012, 19:00  [ТС] #5
мне надо считать цифру а не букву но если случайно нажать букву то такое будет!
мне надо остановить и начать ввод заново
0
Байт
Нарушитель
Эксперт C
16679 / 10941 / 1679
Регистрация: 24.12.2010
Сообщений: 21,329
09.03.2012, 19:05 #6
Перевод копеек в рубли
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
09.03.2012, 19:10 #7
Taras_Z, читай в переменную типа char.
0
Drum and C++
12 / 14 / 0
Регистрация: 03.08.2011
Сообщений: 213
09.03.2012, 19:18 #8
че непонятного запиши в char if(z!='1'){То то и то то}
и юзай continue и break
0
Байт
Нарушитель
Эксперт C
16679 / 10941 / 1679
Регистрация: 24.12.2010
Сообщений: 21,329
09.03.2012, 19:21 #9
Вообще, будь моя воля, я бы штуки типа cin>> и scanf - запретил бы! Или допускал бы их использование только после сдачи экзамена, типа как на права. Или хотя бы ограничил их использование самыми простейшими случаями. А все попытки их использовать как-то изощренно пресекал путем отрубания рук
0
rangerx
1937 / 1546 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
09.03.2012, 19:48 #10
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <conio.h>
#include <iostream>
#include <limits>
 
using namespace std;
 
int main()
{
   int a = 0;
 
   cout << "Please enter number(0-9): ";
   cin >> a;
   
   while(!cin || (a < 0 || a > 9))
   {      
      cout << "Error, try again: ";
      cin.clear();
      cin.ignore(numeric_limits<streamsize>::max(), '\n');
      cin >> a;        
   }
   cout << "Ok!\n";
   getch();
}
2
Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
09.03.2012, 20:09  [ТС] #11
спасибо понял!
0
09.03.2012, 20:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2012, 20:09
Привет! Вот еще темы с ответами:

Оператор cin. Ввод нескольких переменных через делитель - C++
Всем доброго времени суток. Я начинаю работать с C++ и столкнулся с такой проблемой при написании программы. Мне надо ввести в консольном...

Оператор cin. Задать ширину для вывода нескольких значений - C++
Добрый вечер, уважаемые программисты. Проблема заключается в следующем: При выводе таблицы столбцы получаются неровными. Вот код: ...

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

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


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

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

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