Tous les défis
Facile 0 résolus 0 % de réussite

Premier âge invalide

Validez les âges saisis et indiquez où se trouve la première entrée erronée au lieu de laisser le programme planter.

Ce que vous allez apprendre

  • Vérifier qu'un texte ne contient que des chiffres
  • Vérifier qu'un nombre est dans un intervalle
  • Signaler la position de la première entrée invalide

Problème

Un formulaire d'inscription reçoit des âges sous forme de texte. Une entrée est valide lorsque, après avoir supprimé les espaces aux deux extrémités, elle ne contient que des chiffres (sans signe) et que sa valeur est comprise entre 0 et 150 inclus.

Trouvez la première entrée invalide afin que le formulaire puisse l'indiquer à l'utilisateur.

Implémentez first_invalid_age(values).

Input

values: Les âges saisis, dans l'ordre du formulaire.

Output

Retournez l'indice de la première entrée invalide, ou -1 si elles sont toutes valides.

Contraintes

0 ≤ nombre d'entrées ≤ 10,000

Chaque entrée a au plus 20 caractères

Exemples

Exemple 1
Entrée :
values = ["25", " 40 ", "abc", "200"]

Sortie attendue :
expected = 2
Entrée :
std::vector<std::string> values = {"25", " 40 ", "abc", "200"};

Sortie attendue :
long long expected = 2;
Entrée :
string[] values = new string[] {"25", " 40 ", "abc", "200"};

Sortie attendue :
long expected = 2;

Explication

"25" et " 40 " (espaces retirés) sont valides ; "abc" à l'indice 2 est la première entrée invalide.

Exemple 2
Entrée :
values = ["0", "150", "007"]

Sortie attendue :
expected = -1
Entrée :
std::vector<std::string> values = {"0", "150", "007"};

Sortie attendue :
long long expected = -1;
Entrée :
string[] values = new string[] {"0", "150", "007"};

Sortie attendue :
long expected = -1;

Explication

Les trois sont des chiffres entre 0 et 150 (007 vaut 7), donc la réponse est -1.

Comment l'aborder

Essayez d'abord seul, puis ouvrez les indices un par un.

Indice 1

Retirez les espaces, puis vérifiez que l'entrée n'est pas vide et ne contient que des chiffres.

Indice 2

Ensuite seulement, comparez sa valeur à 150.

Indice 3

Un signe moins rend l'entrée invalide, et 007 est un 7 valide.

Complexité attendue

temps O(longueur totale), espace supplémentaire O(1)

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.