@DeboshiR
Свободу разработчикам!!!

Как сделать проверку на вводу в массив чисел?

Проблема проста до безобразия: надо ввести числа в массив int и на ходу проверить являются ли они числами.
На данный момент использую такой код:
const int n = 10;
int arr[n], i = 0;
int num;    
for (i = 0; i < n; i++) {
    cout << i + 1 << "-ый элемент: ";
    try {
        cin >> arr[i];
    }
    catch (exception e) {
        cout << "неверно";
    }
}

Перепробовал кучу вариантов из интернетов.
З.Ы.: при проверке желательно использовать try..catch.
  • Вопрос задан
  • 482 просмотра
Пригласить эксперта
Ответы на вопрос 1
zergon321
@zergon321
cin при некорректном вводе в логическом контексте возвращает false:

inline void clear_istream(std::istream& stream)
{
	while (stream.get() != '\n')
		;
}

template <typename numeric> void check_error(std::istream& stream, numeric& x)
{
	while (!(stream >> x))
		{
			stream.clear(); //обновить флаги в std::cin, чтобы открыть дальнейший ввод
			clear_istream(stream); //очистить ввод
			std::cerr << "You entered wrong value. Please enter an integer number: ";
		}
}


Просто вызовите check_error(std::cin, arr[i]);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы