Solutions des exercices avancés de la semaine 4
1. Saisie contrôlée d'un intervalle
int nombre;
int tentatives = 0;
bool valide = false;
while (!valide)
{
Console.Write("Entrez un nombre entre 1 et 100 : ");
string saisie = Console.ReadLine();
tentatives++;
if (!int.TryParse(saisie, out nombre))
{
Console.WriteLine("L'entrée doit être un nombre entier.");
}
else if (nombre < 1 || nombre > 100)
{
Console.WriteLine("Le nombre doit être compris entre 1 et 100.");
}
else
{
valide = true;
}
}
Console.WriteLine("Valeur acceptée : " + nombre);
Console.WriteLine("Nombre de tentatives : " + tentatives);
2. Mot de passe avec verrouillage
string motDePasseCorrect = "Prog1!2026";
int essaisRestants = 3;
bool connexionReussie = false;
while (essaisRestants > 0)
{
Console.Write("Entrez le mot de passe : ");
string saisie = Console.ReadLine();
if (saisie == motDePasseCorrect)
{
connexionReussie = true;
break;
}
essaisRestants--;
Console.WriteLine("Mot de passe incorrect.");
Console.WriteLine("Essais restants : " + essaisRestants);
Thread.Sleep(TimeSpan.FromSeconds(1));
}
if (connexionReussie)
{
Console.WriteLine("Connexion réussie !");
}
else
{
Console.WriteLine("Compte verrouillé.");
}
3. Analyse des caractères d'un mot
string mot = "";
while (string.IsNullOrWhiteSpace(mot))
{
Console.Write("Entrez un mot : ");
mot = Console.ReadLine();
}
int voyelles = 0;
int consonnes = 0;
int chiffres = 0;
for (int position = 0; position < mot.Length; position++)
{
char caractere = char.ToLower(mot[position]);
if (char.IsDigit(caractere))
{
chiffres++;
}
else if (caractere == 'a' || caractere == 'e' || caractere == 'i'
|| caractere == 'o' || caractere == 'u' || caractere == 'y')
{
voyelles++;
}
else if (char.IsLetter(caractere))
{
consonnes++;
}
}
Console.WriteLine("Premier caractère : " + mot[0]);
Console.WriteLine("Dernier caractère : " + mot[mot.Length - 1]);
Console.WriteLine("Voyelles : " + voyelles);
Console.WriteLine("Consonnes : " + consonnes);
Console.WriteLine("Chiffres : " + chiffres);
4. Détecteur de palindrome
string mot = "";
while (string.IsNullOrWhiteSpace(mot))
{
Console.Write("Entrez un mot : ");
mot = Console.ReadLine();
}
string motNettoye = "";
for (int position = 0; position < mot.Length; position++)
{
if (mot[position] != ' ')
{
motNettoye += char.ToLower(mot[position]);
}
}
bool palindrome = true;
for (int gauche = 0; gauche < motNettoye.Length / 2; gauche++)
{
int droite = motNettoye.Length - 1 - gauche;
if (motNettoye[gauche] != motNettoye[droite])
{
palindrome = false;
break;
}
}
if (palindrome)
{
Console.WriteLine("Le mot est un palindrome.");
}
else
{
Console.WriteLine("Le mot n'est pas un palindrome.");
}
int nombre = 0;
double prix = 0.0;
bool nombreSaisi = false;
bool prixSaisi = false;
while (true)
{
Console.WriteLine();
Console.WriteLine("1. Saisir un nombre entier");
Console.WriteLine("2. Saisir un prix positif");
Console.WriteLine("3. Afficher les données saisies");
Console.WriteLine("4. Quitter");
Console.Write("Votre choix : ");
string choix = Console.ReadLine();
if (choix == "1")
{
Console.Write("Entrez un nombre entier : ");
string saisie = Console.ReadLine();
if (!int.TryParse(saisie, out nombre))
{
Console.WriteLine("Nombre invalide.");
continue;
}
nombreSaisi = true;
Console.WriteLine("Nombre enregistré.");
}
else if (choix == "2")
{
Console.Write("Entrez un prix positif : ");
string saisie = Console.ReadLine();
if (!double.TryParse(saisie, out prix) || prix < 0)
{
Console.WriteLine("Prix invalide.");
continue;
}
prixSaisi = true;
Console.WriteLine("Prix enregistré.");
}
else if (choix == "3")
{
if (nombreSaisi)
{
Console.WriteLine("Nombre : " + nombre);
}
else
{
Console.WriteLine("Aucun nombre saisi.");
}
if (prixSaisi)
{
Console.WriteLine("Prix : " + prix + " $");
}
else
{
Console.WriteLine("Aucun prix saisi.");
}
}
else if (choix == "4")
{
break;
}
else
{
Console.WriteLine("Choix invalide.");
continue;
}
}
Console.WriteLine("Fin du programme.");
6. Saisie d'une phrase contrôlée
string phrase = "";
while (string.IsNullOrWhiteSpace(phrase) || phrase.Length < 10)
{
Console.Write("Entrez une phrase d'au moins 10 caractères : ");
phrase = Console.ReadLine();
}
int espaces = 0;
int ponctuation = 0;
string inverse = "";
for (int position = 0; position < phrase.Length; position++)
{
char caractere = phrase[position];
if (caractere == ' ')
{
espaces++;
}
if (caractere == '!' || caractere == '?' || caractere == '.')
{
ponctuation++;
}
}
for (int position = phrase.Length - 1; position >= 0; position--)
{
inverse += phrase[position];
}
Console.WriteLine("Phrase inversée : " + inverse);
Console.WriteLine("Nombre de caractères : " + phrase.Length);
Console.WriteLine("Nombre d'espaces : " + espaces);
Console.WriteLine("Nombre de signes de ponctuation : " + ponctuation);
Console.Write("Entrez votre nom : ");
string nom = Console.ReadLine();
if (string.IsNullOrWhiteSpace(nom))
{
Console.WriteLine("Le nom ne peut pas être vide.");
return;
}
Console.Write("Entrez votre âge : ");
string saisieAge = Console.ReadLine();
int age;
if (!int.TryParse(saisieAge, out age))
{
Console.WriteLine("L'âge doit être un entier.");
return;
}
if (age < 0 || age > 120)
{
Console.WriteLine("L'âge doit être compris entre 0 et 120.");
return;
}
Console.Write("Entrez votre poids : ");
string saisiePoids = Console.ReadLine();
double poids;
if (!double.TryParse(saisiePoids, out poids))
{
Console.WriteLine("Le poids doit être un nombre réel.");
return;
}
if (poids <= 0)
{
Console.WriteLine("Le poids doit être strictement positif.");
return;
}
Console.Write("Entrez votre catégorie (A, B ou C) : ");
string categorie = Console.ReadLine();
if (categorie != "A" && categorie != "B" && categorie != "C")
{
Console.WriteLine("La catégorie doit être A, B ou C.");
return;
}
Console.WriteLine();
Console.WriteLine("Formulaire accepté");
Console.WriteLine("Nom : " + nom);
Console.WriteLine("Âge : " + age);
Console.WriteLine("Poids : " + poids + " kg");
Console.WriteLine("Catégorie : " + categorie);
Console.WriteLine("Nom : " + nom);
Thread.Sleep(TimeSpan.FromSeconds(1));
Console.WriteLine("Âge : " + age);
Thread.Sleep(TimeSpan.FromSeconds(1));
Console.WriteLine("Poids : " + poids + " kg");
Thread.Sleep(TimeSpan.FromSeconds(1));
Console.WriteLine("Catégorie : " + categorie);