@dzzaad

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

Как сделать условие, чтобы проверить входные данные на число. Есть isdigit, но либо я не понимаю его работу, либо он не правильно работает.
Фрагмент кода:

int main() {
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	struct DATA student_group[30];
	int i = 1, count_students, check;
Step1:
	cout << "Введите количество студентов: ";
	cin >> count_students;
	check = count_students % 10;
	if (!(isdigit(check))) {
		cout << "Неправильные входные данные. Попробуйте еще раз.";
		goto Step1;
	}


Вывод, если ввести что-то, кроме цифр, например "ыфв":

626ea39662202688267338.png
  • Вопрос задан
  • 371 просмотр
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
isdigit

проверяет, является ли символ цифрой или нет. Помогло бы вам, если бы вы получали из стандартного ввода строку и сами переводили её в число. Но нет, операция
int count_students;
  cin >> count_students;

вводит не строку, а число.

Чтобы проверить, был ли ввод успешным или нет можно вызвать cin.fail(), типа того:
cin >> count_students;
  if (cin.fail()) {
    cout << "Неправильные входные данные. Попробуйте еще раз.";
    cin.clear();
    cin.ignore();
    goto Step1;
  }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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