comment vérifier si l'entrée est un nombre c ++


Réponse 1:

Bonjour,

Eh bien, vous pouvez valider un nombre entier en prenant simplement l'entrée de votre code sous forme de chaîne.

Ensuite, exécutez une boucle à travers la chaîne et vérifiez pour chaque caractère si le caractère est un chiffre ou non. Vous pouvez le faire en utilisant la fonction intégrée «isdigit ()» de C ++ qui renvoie une valeur booléenne.

Si vous obtenez une fois un caractère qui n'est pas un chiffre, conservez un drapeau précédemment déclaré et modifiez sa valeur. Ensuite, vous pouvez interrompre la boucle et dire que l'entrée n'est pas numérique, sinon numérique.

Code:

#comprendre en utilisant l'espace de noms std;int main(){int c = 0; //drapeau string s; cin >> s; pour (int i = 0; i { if (! isdigit (s [i])) {c = 1; break;} } if (c == 1) cout << "Non numérique" < else cout << "Yap, Numeric" < return 0;}

Le code ci-dessus sert uniquement à valider un nombre entier. Mais que ferez-vous pour un nombre flottant !!!

Pas de souci, si vous comprenez parfaitement le code ci-dessus, vous pouvez facilement appliquer le même code avec une petite modification en validant une valeur «float» :)

Si vous avez une confusion ou un problème dans la résolution du code ci-dessus ou ne pouvez pas résoudre le problème de la validation du nombre flottant, veuillez m'en informer :)

Bon codage! :RÉ


Réponse 2:

la saisie numérique n'est pas un domaine exact. Vous devez définir exactement ce que vous voulez dire.

123 est-il numérique? Et -123? Et le 123e10? Que diriez-vous de 123.123? Que diriez-vous de -1234567890.123456789012345678901234567890e5? Tous ces éléments sont considérés comme numériques dans différents domaines, et la vérification de chacun est différente.

En C / C ++, la meilleure façon de garantir une entrée correcte est d'utiliser d'abord les fonctions scanf ou cin, qui obligent l'entrée à correspondre au type de variable fourni.

Après cela, si vous avez besoin d'une vérification supplémentaire du domaine, vous pouvez placer des assertions autour de la variable d'entrée. Par exemple, si le nombre doit être inférieur à 1000, vous pouvez faire assert (input <1000) ou if (input> = 1000) handle_error ();


Réponse 3:

Utilisez des valeurs ASCII, le chiffre inférieur est '0' (ASCII 48) et supérieur est 9 (ASCII 57), tous consécutifs, alors vérifiez que chaque chiffre est dans la plage correcte ... N'est pas élégant, mais fonctionne et est petit code.

#comprendre #comprendre booléen is_digit (char * c_array){ pour (int k = 0; k if ((int) tableau_c [k] <(int) '0' || (int) tableau_c [k]> (int) '9') { retourner faux; } } retourne vrai;}int main(){ std :: string tmp; std :: cout << "nombre: \ n"; std :: getline (std :: cin, tmp);if (is_digit (const_cast (tmp.c_str ()))) std :: cout << "vrai" << std :: endl; autre std :: cout << "false" << std :: endl;}

Réponse 4:
Le moyen simple de valider les entrées numériques en C ++:1) Utilisation de la fonction IsDigitif (isdigit (mot de passe [i])) {cout << "\ nMerci." << endl; } // c'est un entier yay! autre { cout << "\ nVous ne pouvez avoir qu'une connexion numérique" << endl; }

Réponse 5:

La question peut être interprétée de 2 manières.

  1. Une chaîne, en entrée, est-elle entièrement générée par l'expression régulière [0–9] +?
  2. Une chaîne comme entrée peut-elle être imaginée comme un nombre?

La définition de «numérique» est différente.

Veuillez déterminer ce que vous voulez en [1,2]… et les réponses seront alors différentes.