с++.Помогите найти ошибку. - Вопросы по С+

Вопрос с++.Помогите найти ошибку.

Регистрация
10 Май 2013
Сообщения
83
Репутация
0
Спасибо
0
Монет
0
Хочу сделать ввод числа с клавиатуры, в случае если введенный символ не число запрашивать у пользователя повторный ввод до тех пор пока он не введет число. Проблема в том что при неудачном вводе переменная не хочет менять свое значение и зацикливается цикл while.Заранее благодарен и прошу прощения если вопрос глупый, я новичок в с++ и в программировании в целом. Код программы ниже.

#include
#include

using std ::endl;
using std ::cout;
using std ::cin;

int main(){

long float a;

setlocale(LC_ALL , "Russian");

cout << "Введите число: ";

while(!(cin >> a))
{
cout << "Введите число: ";
cin >> a;
}

_getch();
}
 
Регистрация
21 Дек 2013
Сообщения
77
Репутация
1
Спасибо
0
Монет
0
using namespace std; int main() { cin.exceptions(ios_base::failbit); double a; while (true) { try { cout << "Input number "; cin >> a; } catch(ios_base::failure) { cin.exceptions(ios_base::goodbit); cout<<"Get exception "; cin.clear(); //поток всё ещё сломан } cin.ignore(); } return 0; } Тут тебе исключения в помощь
 
Регистрация
18 Май 2013
Сообщения
93
Репутация
0
Спасибо
0
Монет
0
Смущают 2 момента. 1. Что за long float? Допускаю, что есть такой тип, но лучше замени на double 2. Цикл while вообще не верный, cin >> a возвращает поток, а не логическое значение. Лучше считывай с консоли через getline(cin, str) а потом проверяй на соответствие числу. В общем, направление я тебе указал.
 
Сверху Снизу