Aller au contenu

Exercices C# - Entrées/Sorties Console

💬 Exercices C# - Entrées/Sorties Console

Maîtrisez les interactions avec l'utilisateur en C# ! Ces exercices vous apprendront à lire les données saisies par l'utilisateur et à afficher des résultats formatés dans la console. Découvrez les méthodes Console.ReadLine(), Console.Write() et les techniques de formatage avancées.

🌱 Introduction

👋 Salutation personnalisée

Créez un programme qui demande le nom de l'utilisateur et l'accueille personnellement.

Utilisez Console.ReadLine() pour lire le nom et affichez "Bonjour [nom] !"

using System;

class Program
{
    static void Main()
    {
        Console.Write("Quel est votre nom ? ");
        string nom = Console.ReadLine();
        Console.WriteLine($"Bonjour {nom} !");
    }
}
🌱 Introduction

🔢 Saisie de nombres

Demandez à l'utilisateur de saisir deux nombres et affichez leur somme.

N'oubliez pas de convertir les chaînes en nombres avec int.Parse() ou Convert.ToInt32().

using System;

class Program
{
    static void Main()
    {
        Console.Write("Premier nombre : ");
        int nombre1 = int.Parse(Console.ReadLine());

        Console.Write("Deuxième nombre : ");
        int nombre2 = int.Parse(Console.ReadLine());

        int somme = nombre1 + nombre2;
        Console.WriteLine($"La somme de {nombre1} et {nombre2} est {somme}");
    }
}
🌱 Introduction

📏 Calcul d'aire

Calculez l'aire d'un rectangle en demandant la longueur et la largeur.

Formule : Aire = longueur × largeur

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("=== Calcul d'aire d'un rectangle ===");

        Console.Write("Longueur (en cm) : ");
        double longueur = double.Parse(Console.ReadLine());

        Console.Write("Largeur (en cm) : ");
        double largeur = double.Parse(Console.ReadLine());

        double aire = longueur * largeur;

        Console.WriteLine($"L'aire du rectangle est {aire} cm²");
    }
}
⭐ Facile

🎂 Calcul d'âge interactif

Demandez l'année de naissance et calculez l'âge de l'utilisateur.

Affichez un message personnalisé selon l'âge (mineur/majeur).

using System;

class Program
{
    static void Main()
    {
        Console.Write("En quelle année êtes-vous né(e) ? ");
        int anneeNaissance = int.Parse(Console.ReadLine());

        int anneeActuelle = DateTime.Now.Year;
        int age = anneeActuelle - anneeNaissance;

        Console.WriteLine($"Vous avez {age} ans.");

        if (age >= 18)
            Console.WriteLine("Vous êtes majeur(e) !");
        else
            Console.WriteLine($"Vous serez majeur(e) dans {18 - age} an(s).");
    }
}
⭐ Facile

🌡️ Convertisseur de température

Convertissez des degrés Celsius en Fahrenheit.

Formule : F = (C × 9/5) + 32

💡 Astuce

Utilisez double.Parse() pour les nombres décimaux.

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("=== Convertisseur Celsius → Fahrenheit ===");

        Console.Write("Température en Celsius : ");
        double celsius = double.Parse(Console.ReadLine());

        double fahrenheit = (celsius * 9.0 / 5.0) + 32;

        Console.WriteLine($"{celsius}°C = {fahrenheit:F1}°F");

        // Message selon la température
        if (celsius <= 0)
            Console.WriteLine("Il fait très froid ! ❄️");
        else if (celsius >= 30)
            Console.WriteLine("Il fait très chaud ! ☀️");
        else
            Console.WriteLine("Température agréable ! 😊");
    }
}
🔥 Intermédiaire

🛒 Calculateur de prix

Calculez le prix total d'un achat avec TVA.

Demandez le prix HT, le taux de TVA (en %), et calculez le prix TTC.

Affichez aussi le montant de la TVA.

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("=== Calculateur de prix avec TVA ===");

        Console.Write("Prix HT (€) : ");
        double prixHT = double.Parse(Console.ReadLine());

        Console.Write("Taux de TVA (%) : ");
        double tauxTVA = double.Parse(Console.ReadLine());

        double montantTVA = prixHT * tauxTVA / 100;
        double prixTTC = prixHT + montantTVA;

        Console.WriteLine("\n=== FACTURE ===");
        Console.WriteLine($"Prix HT    : {prixHT:F2} €");
        Console.WriteLine($"TVA ({tauxTVA}%)   : {montantTVA:F2} €");
        Console.WriteLine($"Prix TTC   : {prixTTC:F2} €");
    }
}
⭐ Facile

📊 Tableau de données

Créez un tableau formaté avec les informations d'une personne.

Demandez nom, prénom, âge et ville, puis affichez-les dans un tableau aligné.

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("=== Saisie d'informations ===");

        Console.Write("Nom : ");
        string nom = Console.ReadLine();

        Console.Write("Prénom : ");
        string prenom = Console.ReadLine();

        Console.Write("Âge : ");
        int age = int.Parse(Console.ReadLine());

        Console.Write("Ville : ");
        string ville = Console.ReadLine();

        Console.WriteLine("\n" + new string('=', 40));
        Console.WriteLine("           FICHE PERSONNELLE");
        Console.WriteLine(new string('=', 40));
        Console.WriteLine($"{"Nom",-12} : {nom}");
        Console.WriteLine($"{"Prénom",-12} : {prenom}");
        Console.WriteLine($"{"Âge",-12} : {age} ans");
        Console.WriteLine($"{"Ville",-12} : {ville}");
        Console.WriteLine(new string('=', 40));
    }
}
🔥 Intermédiaire

💰 Formatage monétaire

Créez un programme qui affiche des montants avec différents formats.

Demandez un montant et affichez-le en euros, dollars et avec différentes précisions.

using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        Console.Write("Montant en euros : ");
        double montant = double.Parse(Console.ReadLine());

        double montantDollars = montant * 1.10; // Taux fictif

        Console.WriteLine("\n=== FORMATAGE MONÉTAIRE ===");
        Console.WriteLine($"Format standard    : {montant:F2} €");
        Console.WriteLine($"Format monétaire   : {montant:C}");
        Console.WriteLine($"Sans décimales     : {montant:F0} €");
        Console.WriteLine($"3 décimales        : {montant:F3} €");
        Console.WriteLine($"En dollars         : ${montantDollars:F2}");
        Console.WriteLine($"Notation comptable : {montant,15:F2} €");

        if (montant >= 1000)
            Console.WriteLine($"Avec séparateurs   : {montant:N2} €");
    }
}
🔥 Intermédiaire

📅 Formatage de dates

Affichez la date actuelle dans différents formats.

Montrez les formats court, long, personnalisé et dans différentes langues.

using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        Console.Write("Entrez votre nom : ");
        string nom = Console.ReadLine();

        DateTime maintenant = DateTime.Now;

        Console.WriteLine($"\nBonjour {nom} !");
        Console.WriteLine("\n=== FORMATS DE DATE ===");
        Console.WriteLine($"Date courte        : {maintenant:d}");
        Console.WriteLine($"Date longue        : {maintenant:D}");
        Console.WriteLine($"Date et heure      : {maintenant:F}");
        Console.WriteLine($"Format ISO         : {maintenant:yyyy-MM-dd}");
        Console.WriteLine($"Format personnalisé: {maintenant:dddd dd MMMM yyyy}");
        Console.WriteLine($"Heure seulement    : {maintenant:HH:mm:ss}");
        Console.WriteLine($"Format US          : {maintenant.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture)}");
    }
}
🚀 Difficile

🎮 Menu interactif

Créez un menu interactif avec plusieurs options.

Le programme doit afficher un menu, lire le choix de l'utilisateur et exécuter l'action correspondante.

using System;

class Program
{
    static void Main()
    {
        bool continuer = true;

        while (continuer)
        {
            Console.Clear();
            Console.WriteLine("╔══════════════════════════════╗");
            Console.WriteLine("║        MENU PRINCIPAL        ║");
            Console.WriteLine("╠══════════════════════════════╣");
            Console.WriteLine("║ 1. Calculer une aire         ║");
            Console.WriteLine("║ 2. Convertir température     ║");
            Console.WriteLine("║ 3. Calculer l'âge            ║");
            Console.WriteLine("║ 4. Quitter                   ║");
            Console.WriteLine("╚══════════════════════════════╝");
            Console.Write("\nVotre choix (1-4) : ");

            string choix = Console.ReadLine();

            switch (choix)
            {
                case "1":
                    CalculerAire();
                    break;
                case "2":
                    ConvertirTemperature();
                    break;
                case "3":
                    CalculerAge();
                    break;
                case "4":
                    continuer = false;
                    Console.WriteLine("Au revoir !");
                    break;
                default:
                    Console.WriteLine("Choix invalide !");
                    break;
            }

            if (continuer)
            {
                Console.WriteLine("\nAppuyez sur une touche pour continuer...");
                Console.ReadKey();
            }
        }
    }

    static void CalculerAire()
    {
        Console.Write("Longueur : ");
        double longueur = double.Parse(Console.ReadLine());
        Console.Write("Largeur : ");
        double largeur = double.Parse(Console.ReadLine());
        Console.WriteLine($"Aire = {longueur * largeur} unités²");
    }

    static void ConvertirTemperature()
    {
        Console.Write("Température en °C : ");
        double celsius = double.Parse(Console.ReadLine());
        double fahrenheit = (celsius * 9.0 / 5.0) + 32;
        Console.WriteLine($"{celsius}°C = {fahrenheit:F1}°F");
    }

    static void CalculerAge()
    {
        Console.Write("Année de naissance : ");
        int annee = int.Parse(Console.ReadLine());
        int age = DateTime.Now.Year - annee;
        Console.WriteLine($"Vous avez {age} ans");
    }
}
🚀 Difficile

🧮 Calculatrice avancée

Créez une calculatrice interactive complète.

L'utilisateur saisit deux nombres et choisit l'opération. Gérez les erreurs (division par zéro, saisie invalide).

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("🧮 CALCULATRICE AVANCÉE 🧮\n");

        try
        {
            Console.Write("Premier nombre : ");
            double nombre1 = double.Parse(Console.ReadLine());

            Console.Write("Deuxième nombre : ");
            double nombre2 = double.Parse(Console.ReadLine());

            Console.WriteLine("\nOpérations disponibles :");
            Console.WriteLine("+ : Addition");
            Console.WriteLine("- : Soustraction");
            Console.WriteLine("* : Multiplication");
            Console.WriteLine("/ : Division");
            Console.WriteLine("% : Modulo");
            Console.WriteLine("^ : Puissance");

            Console.Write("\nChoisissez une opération : ");
            string operation = Console.ReadLine();

            double resultat = 0;
            bool operationValide = true;

            switch (operation)
            {
                case "+":
                    resultat = nombre1 + nombre2;
                    break;
                case "-":
                    resultat = nombre1 - nombre2;
                    break;
                case "*":
                    resultat = nombre1 * nombre2;
                    break;
                case "/":
                    if (nombre2 == 0)
                    {
                        Console.WriteLine("❌ Erreur : Division par zéro impossible !");
                        operationValide = false;
                    }
                    else
                        resultat = nombre1 / nombre2;
                    break;
                case "%":
                    if (nombre2 == 0)
                    {
                        Console.WriteLine("❌ Erreur : Modulo par zéro impossible !");
                        operationValide = false;
                    }
                    else
                        resultat = nombre1 % nombre2;
                    break;
                case "^":
                    resultat = Math.Pow(nombre1, nombre2);
                    break;
                default:
                    Console.WriteLine("❌ Opération non reconnue !");
                    operationValide = false;
                    break;
            }

            if (operationValide)
            {
                Console.WriteLine($"\n✅ Résultat : {nombre1} {operation} {nombre2} = {resultat:F2}");
            }
        }
        catch (FormatException)
        {
            Console.WriteLine("❌ Erreur : Veuillez saisir des nombres valides !");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"❌ Erreur inattendue : {ex.Message}");
        }
    }
}
🚀 Difficile

🎯 Jeu de devinette

Créez un jeu où l'utilisateur doit deviner un nombre.

Le programme génère un nombre aléatoire entre 1 et 100. L'utilisateur a des indices "trop grand" ou "trop petit".

using System;

class Program
{
    static void Main()
    {
        Random random = new Random();
        int nombreSecret = random.Next(1, 101);
        int tentatives = 0;
        int maxTentatives = 7;
        bool trouve = false;

        Console.WriteLine("🎯 JEU DE DEVINETTE 🎯");
        Console.WriteLine("J'ai choisi un nombre entre 1 et 100.");
        Console.WriteLine($"Vous avez {maxTentatives} tentatives pour le trouver !\n");

        while (!trouve && tentatives < maxTentatives)
        {
            tentatives++;
            Console.Write($"Tentative {tentatives}/{maxTentatives} - Votre nombre : ");

            try
            {
                int proposition = int.Parse(Console.ReadLine());

                if (proposition < 1 || proposition > 100)
                {
                    Console.WriteLine("⚠️ Le nombre doit être entre 1 et 100 !");
                    tentatives--; // Ne pas compter cette tentative
                    continue;
                }

                if (proposition == nombreSecret)
                {
                    trouve = true;
                    Console.WriteLine($"🎉 Bravo ! Vous avez trouvé en {tentatives} tentative(s) !");

                    if (tentatives <= 3)
                        Console.WriteLine("🏆 Excellent ! Vous êtes un expert !");
                    else if (tentatives <= 5)
                        Console.WriteLine("👍 Bien joué !");
                    else
                        Console.WriteLine("😅 Vous y êtes arrivé de justesse !");
                }
                else if (proposition < nombreSecret)
                {
                    Console.WriteLine("📈 Trop petit ! Essayez plus grand.");
                }
                else
                {
                    Console.WriteLine("📉 Trop grand ! Essayez plus petit.");
                }

                if (!trouve && tentatives < maxTentatives)
                {
                    int ecart = Math.Abs(proposition - nombreSecret);
                    if (ecart <= 5)
                        Console.WriteLine("🔥 Vous êtes très proche !");
                    else if (ecart <= 10)
                        Console.WriteLine("🌡️ Vous vous rapprochez !");
                }
            }
            catch (FormatException)
            {
                Console.WriteLine("❌ Veuillez saisir un nombre valide !");
                tentatives--; // Ne pas compter cette tentative
            }

            Console.WriteLine();
        }

        if (!trouve)
        {
            Console.WriteLine($"😞 Dommage ! Le nombre était {nombreSecret}.");
            Console.WriteLine("Essayez encore une prochaine fois !");
        }
    }
}