Skip to content

Exercices avancés de la semaine 4

Ces exercices réutilisent la validation des données, les boucles, les conditions, les sorties anticipées et les chaînes de caractères.

Consignes générales

  • Déclarer les variables avant de les utiliser avec TryParse.
  • Vérifier toutes les entrées provenant de Console.ReadLine().
  • Afficher un message clair lorsque l'entrée est invalide.
  • Utiliser une sortie anticipée lorsque la suite du programme n'a plus de raison d'être.
  • Ne pas créer de méthode, sauf si l'exercice le demande explicitement.

1. Saisie contrôlée d'un intervalle

Demander un nombre entier compris entre 1 et 100.

  • Redemander la valeur tant que l'entrée n'est pas un entier ou qu'elle est hors de l'intervalle.
  • Afficher un message différent pour une entrée qui n'est pas un entier et pour un entier hors limites.
  • Afficher la valeur acceptée et le nombre de tentatives nécessaires.

2. Mot de passe avec verrouillage

Demander un mot de passe qui doit être égal à Prog1!2026.

  • Accorder au maximum trois essais.
  • Arrêter immédiatement la boucle avec break si le mot de passe est correct.
  • Afficher le nombre d'essais restants après chaque erreur.
  • Attendre trois secondes après chaque erreur avec Thread.Sleep.
  • Afficher un message de succès ou de verrouillage à la fin.

3. Analyse des caractères d'un mot

Demander un mot non vide.

  • Refuser une chaîne vide ou composée uniquement d'espaces.
  • Parcourir le mot avec une boucle for.
  • Compter les voyelles, les consonnes et les chiffres.
  • Afficher le premier et le dernier caractère avec la notation mot[position].

Le programme doit fonctionner avec les caractères majuscules et minuscules. Vous pouvez convertir une lettre avec char.ToLower.

4. Détecteur de palindrome

Demander un mot non vide et déterminer s'il se lit de la même façon de gauche à droite et de droite à gauche.

Exemples : radar et kayak sont des palindromes.

  • Comparer les caractères situés aux positions opposées.
  • Arrêter la vérification dès qu'une différence est trouvée avec break.
  • Ne pas utiliser Array.Reverse ni une méthode spécialisée de palindrome.

Ignorer les espaces et la différence entre les majuscules et les minuscules dans la phrase.

5. Menu avec traitement progressif

Créer un menu qui propose les choix suivants :

  1. Saisir un nombre entier
  2. Saisir un prix positif
  3. Afficher les données saisies
  4. Quitter

  5. Le menu doit continuer à s'afficher tant que l'utilisateur ne choisit pas 4.

  6. Chaque donnée doit être validée avant d'être conservée.
  7. Afficher un message pour un choix de menu invalide.
  8. Utiliser continue lorsque le choix ou la donnée est invalide.
  9. Utiliser break pour quitter le menu.

6. Saisie d'une phrase contrôlée

Demander une phrase contenant au moins 10 caractères.

  • Refuser une phrase vide ou trop courte.
  • Compter les espaces et les caractères !, ? et . en parcourant la chaîne caractère par caractère.
  • Afficher la phrase avec ses caractères inversés, sans utiliser Reverse.
  • Afficher le nombre total de caractères.

7. Défi final : formulaire sécurisé

Créer un formulaire top-level qui demande, dans l'ordre :

  • un nom non vide;
  • un âge entier entre 0 et 120;
  • un poids réel strictement positif;
  • un choix de catégorie parmi A, B ou C.

Utiliser le principe fail fast :

  • valider chaque donnée immédiatement après sa lecture;
  • afficher un message d'erreur et quitter avec return dès qu'une donnée est invalide;
  • ne pas imbriquer inutilement les validations dans des blocs if/else;
  • afficher le formulaire complet seulement si toutes les données sont valides;
  • afficher les résultats un à un avec une pause d'une seconde entre chaque ligne grâce à Thread.Sleep. La pause doit être placée uniquement dans l'affichage final.