Skip to content

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.");
}

5. Menu avec traitement progressif

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);

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

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);