Exercice C++ Corrigé pour Débutant | Partie 3

Avec des exercices corrigés en C++, vous pratiquerez divers concepts du langage C++. Vous commencerez par des exercices C++ de base à des exercices plus avancés. La solution est fournie pour chaque exercice. Vous devez essayer de résoudre chaque problème par vous-même avant de vérifier la solution. Si vous avez des questions concernant chaque problème, nous vous encourageons à les poster sur notre forum.
 
 

Exercice 1: Additionnez les chiffres d’un nombre

Écrivez un programme C++ qui lit un entier entre 0 et 1000 et calcul la somme de tous les chiffres. Par exemple, le nombre 122, la somme de tous ses chiffres est 5.

Astuce: utilisez l’opérateur % pour extraire les chiffres et utilisez l’opérateur / pour supprimer le chiffre extrait. Par exemple, 122 % 10 = 2 et 122/10 = 12.

Exemple:

Entrez un entier entre 0 et 1000: 122
La somme des chiffres de 122 est: 5
Solution:

#include <iostream>

int sommeChiffres(int nombre) {
    int somme = 0;

    // Tant que le nombre n'est pas nul
    while (nombre != 0) {
        // Ajoute le dernier chiffre à la somme
        somme += nombre % 10;  
        // Enlève le dernier chiffre du nombre
        nombre /= 10;          
    }

    return somme;
}

using namespace std;

int main() {
    int nombre;

    // Demander à l'utilisateur d'entrer un entier entre 0 et 1000
    cout << "Entrez un entier entre 0 et 1000: ";
    cin >> nombre;

    // Vérifier si l'entier est dans l'intervalle valide
    if (nombre < 0 || nombre > 1000) {
        cout <<"Le nombre doit être entre 0 et 1000."<< endl;
    } else {
        // Calculer et afficher la somme des chiffres
        int somme = sommeChiffres(nombre);
        cout <<"La somme des chiffres de "<< nombre <<" est: "<< somme << endl;
    }

    return 0;
}

Sortie:

Entrez un entier entre 0 et 1000: 122
La somme des chiffres de 122 est: 5

Explication:

Dans la fonction sommeChiffres:

  • Calcule la somme des chiffres d'un entier donné.
  • Utilise une boucle while pour extraire chaque chiffre avec l'opérateur % 10 et l'ajouter à la variable somme.
  • Le nombre est ensuite divisé par 10 pour retirer le dernier chiffre jusqu'à ce que le nombre devienne zéro.
 

Exercice 2: Suite de Fibonacci

Écrivez un programme C++ qui renvoie une séquence de Fibonacci. Une séquence de Fibonacci est une série de nombres: 0, 1, 1, 2, 3, 5, 8, 13, 21, ... Le nombre suivant est trouvé en additionnant les deux nombres précédents. Supposons que les index commencent à 0, par exemple, fibonacci(0) = 0, fibonacci(1) = 1, etc...

Exemple:

Entrez le nombre d'éléments de la séquence de Fibonacci: 10
La séquence de Fibonacci avec 10 éléments est: 
0 1 1 2 3 5 8 13 21 34
Solution:

#include <iostream>

using namespace std;

void afficherFibonacci(int n) {
    int a = 0, b = 1, suivant;

    cout <<"La séquence de Fibonacci avec "<< n <<" éléments est: "<< endl;
    
    for (int i = 1; i <= n; ++i) {
        // Affiche le nombre courant de la séquence
        cout << a << " "; 
        
        // Calcul du prochain nombre de Fibonacci
        suivant = a + b;
        a = b;
        b = suivant;
    }

    cout << endl;
}

int main() {
    int nombreElements;

    // Demander à l'utilisateur le nombre d'éléments de la séquence 
    // de Fibonacci
    cout <<"Entrez le nombre d'éléments de la séquence de Fibonacci:";
    cin >> nombreElements;

    // Afficher la séquence
    afficherFibonacci(nombreElements);

    return 0;
}

Sortie:

Entrez le nombre d'éléments de la séquence de Fibonacci: 10
La séquence de Fibonacci avec 10 éléments est: 
0 1 1 2 3 5 8 13 21 34

Explication:

Dans la fonction afficherFibonacci():

  • Affiche la séquence de Fibonacci avec n éléments.
  • Les deux premiers nombres de la séquence sont a = 0 et b = 1.
  • À chaque itération de la boucle, le prochain nombre est la somme des deux précédents.
  • Les variables a et b sont mises à jour pour les prochains calculs.
 

Exercice 3: Fizz Buzz

Écrivez un programme C++ qui renvoie « Fizz » pour des multiples de trois et « Buzz » pour des multiples de cinq. Pour les nombres qui sont des multiples de trois et de cinq, affichez « FizzBuzz ». Pour les nombres qui ne sont ni l'un ni l'autre, renvoyez le nombre saisi.

Exemple:

Entrez un nombre: 15
FizzBuzz
Solution:

#include <iostream>

using namespace std;

void fizzBuzz(int nombre) {
    if (nombre % 3 == 0 && nombre % 5 == 0) {
        // Multiples de 3 et 5
        cout << "FizzBuzz" << endl; 
    } else if (nombre % 3 == 0) {
        // Multiples de 3
        cout << "Fizz" << endl; 
    } else if (nombre % 5 == 0) {
        // Multiples de 5
        cout << "Buzz" << endl; 
    } else {
        // Ni multiple de 3, ni de 5
        cout << nombre << endl; 
    }
}

int main() {
    int nombre;

    // Demander à l'utilisateur d'entrer un nombre
    cout << "Entrez un nombre: ";
    cin >> nombre;

    // Appeler la fonction FizzBuzz pour ce nombre
    fizzBuzz(nombre);

    return 0;
}

Sortie:

Entrez un nombre: 15
FizzBuzz

Explication:

La fonction fizzBuzz() vérifie le nombre saisi par l'utilisateur:

  • Si le nombre est divisible par 3 et 5, elle affiche « FizzBuzz ».
  • Si le nombre est divisible par 3, elle affiche « Fizz ».
  • Si le nombre est divisible par 5, elle affiche « Buzz ».
  • Si aucune de ces conditions n'est remplie, elle affiche le nombre lui-même.
 

Exercice 4: Décimal ➜ Binaire

Écrire un programme C++ pour convertir un nombre entier en un nombre binaire.

Exemple de sortie:

Entrez un nombre entier: 10
Le nombre en binaire est: 1010
Solution:

#include <iostream>
#include <string>

using namespace std;

string convertirEnBinaire(int nombre) {
    string binaire = "";

    if (nombre == 0) {
        return "0"; // Le binaire de 0 est 0
    }

    while (nombre > 0) {
        // Ajouter le reste de la division à gauche de la chaîne
        binaire = to_string(nombre % 2) + binaire; 
        nombre /= 2; // Diviser le nombre par 2
    }

    return binaire;
}

int main() {
    int nombre;

    // Demander à l'utilisateur d'entrer un entier
    cout << "Entrez un nombre entier: ";
    cin >> nombre;

    // Appeler la fonction pour convertir en binaire et afficher le 
    // résultat
    string resultat = convertirEnBinaire(nombre);
    cout <<"Le nombre en binaire est: "<< resultat << endl;

    return 0;
}

Sortie:

Entrez un nombre entier: 10
Le nombre en binaire est: 1010

Explication:

Dans l'exercice ci-dessus la fonction convertirEnBinaire():

  • Cette fonction convertit un nombre entier en binaire.
  • Si le nombre est 0, elle retourne directement "0" (car c'est une exception).
  • Elle utilise une boucle while qui continue tant que le nombre est supérieur à 0. À chaque itération :
  • Elle calcule le reste de la division par 2 (ce qui correspond à un chiffre binaire, soit 0 soit 1) et le place à gauche de la chaîne binaire.
  • Elle divise le nombre par 2 jusqu'à ce qu'il atteigne 0.
 

Exercice 5: Décimal ➜ Hexadécimal

Écrire un programme C++ pour convertir un nombre décimal en un nombre hexadécimal.

Exemple:

Entrez un nombre décimal: 255
Le nombre en hexadécimal est: FF
Solution:

#include <iostream>
#include <iomanip> // Pour std::hex et std::uppercase

using namespace std;

string convertirEnHexa(int nombre) {
    // Chaîne pour stocker la valeur hexadécimale
    string hex = ""; 

    // Vérifier si le nombre est zéro
    if (nombre == 0) {
        return "0";
    }

    while (nombre > 0) {
        // Récupérer le reste pour la conversion
        int reste = nombre % 16; 

        // Convertir le reste en caractère hexadécimal
        if (reste < 10) {
            // Ajout des chiffres 0-9
            hex = static_cast<char>('0' + reste) + hex; 
        } else {
            // Ajout des lettres A-F
            hex = static_cast<char>('A' + (reste - 10)) + hex; 
        }

        // Diviser par 16 pour obtenir le prochain chiffre
        nombre /= 16; 
    }

    return hex;
}

int main() {
    int nombre;

    // Demander à l'utilisateur d'entrer un entier
    cout << "Entrez un nombre décimal: ";
    cin >> nombre;

    // Appeler la fonction pour convertir en hexadécimal et afficher
    // le résultat
    string resultat = convertirEnHexa(nombre);
    cout <<"Le nombre en hexadécimal est: "<< resultat << endl;

    return 0;
}

Sortie:

Entrez un nombre décimal: 255
Le nombre en hexadécimal est: FF

Explication:

Dans l'exercice ci-dessus, la fonction convertirEnHexa():

  • Cette fonction prend un entier décimal et le convertit en hexadécimal.
  • Si le nombre est 0, elle retourne "0" directement.
  • Une boucle while continue tant que le nombre est supérieur à 0. À chaque itération :
    • Elle calcule le reste de la division par 16, ce qui correspond à un chiffre hexadécimal.
    • Si le reste est inférieur à 10, il est converti en caractère en ajoutant '0'.
    • Si le reste est supérieur ou égal à 10, il est converti en lettre (A-F) en ajoutant 'A' moins 10.
    • Le nombre est ensuite divisé par 16 pour passer au chiffre suivant.
 

Exercice 6: Décimal ➜ Octal

Écrire un programme C++ pour convertir un nombre décimal en nombre octal.

Exemple:

Entrez un nombre décimal: 65
Le nombre en octal est: 101
Solution:

#include <iostream>
#include <string>

using namespace std;

string convertirEnOctal(int nombre) {
    // Chaîne pour stocker la valeur octale
    string octal = ""; 

    // Vérifier si le nombre est zéro
    if (nombre == 0) {
        return "0";
    }

    while (nombre > 0) {
        // Récupérer le reste pour la conversion
        int reste = nombre % 8; 
        // Ajouter le reste à gauche de la chaîne
        octal = to_string(reste) + octal; 
        // Diviser par 8 pour obtenir le prochain chiffre
        nombre /= 8; 
    }

    return octal;
}

int main() {
    int nombre;

    // Demander à l'utilisateur d'entrer un entier
    cout << "Entrez un nombre décimal: ";
    cin >> nombre;

    // Appeler la fonction pour convertir en octal et afficher le 
    // résultat
    string resultat = convertirEnOctal(nombre);
    cout <<"Le nombre en octal est: "<< resultat << endl;

    return 0;
}

Sortie:

Entrez un nombre décimal: 65
Le nombre en octal est: 101

Explication:

Dans l'exercice ci-dessus, la fonction convertirEnOctal() :

  • Cette fonction prend un entier décimal et le convertit en octal.
  • Si le nombre est 0, elle retourne "0" directement.
  • Une boucle while continue tant que le nombre est supérieur à 0. À chaque itération :
    • Elle calcule le reste de la division par 8, ce qui correspond à un chiffre octal.
    • Le reste est converti en chaîne de caractères et ajouté à gauche de la chaîne octal.
    • Le nombre est ensuite divisé par 8 pour passer au chiffre suivant.
 

Exercice 7: Binaire ➜ Décimal

Écrire un programme C++ pour convertir un nombre binaire en nombre décimal.

Exemple:

Entrez un nombre binaire: 1011
Le nombre décimal est: 11
Solution:

#include <iostream>
#include <string>
#include <cmath>

using namespace std;

int convertirEnDecimal(const string& binaire) {
    // Variable pour stocker le résultat décimal
    int decimal = 0; 

    // Parcourir chaque caractère de la chaîne binaire de droite à 
    // gauche
    for (int i = 0; i < binaire.length(); ++i) {
        // Vérifier si le caractère est un '1'
        if (binaire[binaire.length() - 1 - i] == '1') {
            // Ajouter 2^i à la valeur décimale
            decimal += pow(2, i); 
        }
    }

    return decimal;
}

int main() {
    string binaire;

    // Demander à l'utilisateur d'entrer un nombre binaire
    cout << "Entrez un nombre binaire : ";
    cin >> binaire;

    // Appeler la fonction pour convertir en décimal et afficher le 
    // résultat
    int resultat = convertirEnDecimal(binaire);
    cout <<"Le nombre décimal est: "<< resultat << endl;

    return 0;
}

Sortie:

Entrez un nombre binaire: 1011
Le nombre décimal est: 11

Explication:

Dans l'exercice ci-dessus, la fonction convertirEnDecimal():

  • Cette fonction prend une chaîne représentant un nombre binaire et la convertit en un entier décimal.
  • Elle initialise une variable decimal à 0 pour stocker le résultat.
  • Une boucle for parcourt chaque caractère de la chaîne binaire de droite à gauche (c'est-à-dire, du bit le moins significatif au bit le plus significatif).
  • Si le caractère est '1', la fonction ajoute 2i2i à decimal, où ii est la position du bit.
 

Exercice 8: Binaire ➜ Hexadécimal

Écrire un programme C++ pour convertir un nombre binaire en un nombre hexadécimal.

Exemple:

Entrez un nombre binaire: 110110
Le nombre hexadécimal est: 36
Solution:

#include <iostream>
#include <string>
#include <cmath>
#include <sstream> // Pour std::stringstream

using namespace std;

string convertirBinaireEnHexa(const string& binaire) {
    // Variable pour stocker la valeur décimale
    int decimal = 0; 

    // Convertir le nombre binaire en décimal
    for (int i = 0; i < binaire.length(); ++i) {
        if (binaire[binaire.length() - 1 - i] == '1') {
            // Ajouter 2^i à la valeur décimale
            decimal += pow(2, i); 
        }
    }

    // Convertir le nombre décimal en hexadécimal
    stringstream ss;
    ss << hex << decimal; // Convertir en hexadécimal
    return ss.str(); // Retourner la chaîne hexadécimale
}

int main() {
    string binaire;

    // Demander à l'utilisateur d'entrer un nombre binaire
    cout << "Entrez un nombre binaire: ";
    cin >> binaire;

    // Appeler la fonction pour convertir en hexadécimal et afficher
    // le résultat
    string resultat = convertirBinaireEnHexa(binaire);
    cout <<"Le nombre hexadécimal est: "<< resultat << endl;

    return 0;
}

Sortie:

Entrez un nombre binaire: 110110
Le nombre hexadécimal est: 36

Explication:

Dans l'exercice ci-dessus, la fonction convertirBinaireEnHexa():

  • Cette fonction prend une chaîne représentant un nombre binaire et la convertit d'abord en décimal.
  • Elle initialise une variable decimal à 0 pour stocker le résultat.
  • Une boucle for parcourt chaque caractère de la chaîne binaire de droite à gauche. Si le caractère est '1', la fonction ajoute 2i2i à decimal, où ii est la position du bit.
  • Après avoir obtenu la valeur décimale, la fonction utilise un std::stringstream pour convertir le nombre décimal en hexadécimal en utilisant std::hex.
  • Elle retourne la chaîne hexadécimale résultante.
 

Exercice 9: Binaire ➜ Octal

Écrire un programme C++ pour convertir un nombre binaire en nombre octal.

Exemple:

Entrez un nombre binaire: 10110
Le nombre octal est: 26
Solution:

#include <iostream>
#include <string>
#include <cmath>

using namespace std;

// Fonction pour convertir un nombre binaire en décimal
int convertirBinaireEnDecimal(const string& binaire) {
    // Variable pour stocker la valeur décimale
    int decimal = 0; 

    // Convertir le nombre binaire en décimal
    for (int i = 0; i < binaire.length(); ++i) {
        if (binaire[binaire.length() - 1 - i] == '1') {
            // Ajouter 2^i à la valeur décimale
            decimal += pow(2, i); 
        }
    }

    return decimal; // Retourner la valeur décimale
}

// Fonction pour convertir un nombre décimal en octal
string convertirDecimalEnOctal(int decimal) {
    // Chaîne pour stocker la valeur octale
    string octal = ""; 

    // Vérifier si le nombre est zéro
    if (decimal == 0) {
        return "0";
    }

    while (decimal > 0) {
        // Récupérer le reste pour la conversion
        int reste = decimal % 8; 
        // Ajouter le reste à gauche de la chaîne
        octal = to_string(reste) + octal; 
        // Diviser par 8 pour obtenir le prochain chiffre
        decimal /= 8; 
    }

    return octal; // Retourner la chaîne octale
}

int main() {
    string binaire;

    // Demander à l'utilisateur d'entrer un nombre binaire
    cout << "Entrez un nombre binaire: ";
    cin >> binaire;

    // Convertir le nombre binaire en décimal
    int decimal = convertirBinaireEnDecimal(binaire);

    // Convertir le nombre décimal en octal
    string resultat = convertirDecimalEnOctal(decimal);

    // Afficher le résultat
    cout <<"Le nombre octal est: "<< resultat << endl;

    return 0;
}

Sortie:

Entrez un nombre binaire: 10110
Le nombre octal est: 26

Explication:

Dans l'exercice ci-dessus, la fonction convertirBinaireEnDecimal():

  • Cette fonction prend une chaîne représentant un nombre binaire et la convertit en un entier décimal.
  • Elle utilise une boucle for pour parcourir chaque bit du nombre binaire, en ajoutant 2i2i au total si le bit est '1'.

Fonction convertirDecimalEnOctal():

  • Cette fonction prend un entier décimal et le convertit en une chaîne octale.
  • Elle utilise une boucle while pour diviser le nombre décimal par 8, en collectant les restes jusqu'à ce que le nombre soit réduit à 0.
 

Éditeur de code C++: Testez votre code en ligne!


QCM C++

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *