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
breaksi 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.Reverseni 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 :
- Saisir un nombre entier
- Saisir un prix positif
- Afficher les données saisies
-
Quitter
-
Le menu doit continuer à s'afficher tant que l'utilisateur ne choisit pas
4. - Chaque donnée doit être validée avant d'être conservée.
- Afficher un message pour un choix de menu invalide.
- Utiliser
continuelorsque le choix ou la donnée est invalide. - Utiliser
breakpour 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,BouC.
Utiliser le principe fail fast :
- valider chaque donnée immédiatement après sa lecture;
- afficher un message d'erreur et quitter avec
returndè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.