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

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:

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

Exemple:

Entrez un nombre octal: 123
Le nombre décimal est: 83
Solution:

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

using namespace std;

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

    // Parcourir chaque caractère de la chaîne octale de droite à 
    // gauche
    for (int i = 0; i < octal.length(); ++i) {
        // Convertir chaque caractère en entier et calculer sa 
        // contribution
        decimal += (octal[octal.length() - 1 - i] - '0') * pow(8, i);
    }

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

int main() {
    string octal;

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

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

    return 0;
}

Sortie:

Entrez un nombre octal: 123
Le nombre décimal est: 83

Explication:

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

  • Cette fonction prend une chaîne représentant un nombre octal et le convertit en un entier décimal.
  • Une boucle for parcourt chaque caractère de la chaîne octale de droite à gauche (du chiffre le moins significatif au plus significatif).
  • Chaque chiffre octal est multiplié par 8i8i où ii est la position du chiffre dans le nombre, et cette contribution est ajoutée au total.
 

Exercice 2:

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

Exemple:

Entrez un nombre octal: 123
Le nombre binaire est: 1010011
Solution:

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

using namespace std;

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

    // Parcourir chaque caractère de la chaîne octale de droite à 
    // gauche
    for (int i = 0; i < octal.length(); ++i) {
        decimal += (octal[octal.length() - 1 - i] - '0') * pow(8, i);
    }

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

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

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

    while (decimal > 0) {
        // Ajouter le reste à gauche de la chaîne
        binaire = to_string(decimal % 2) + binaire; 
        decimal /= 2; // Diviser par 2 pour obtenir le prochain bit
    }

    return binaire;
}

int main() {
    string octal;

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

    // Convertir le nombre octal en décimal
    int decimal = convertirOctalEnDecimal(octal);

    // Convertir le nombre décimal en binaire
    string resultat = convertirDecimalEnBinaire(decimal);

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

    return 0;
}

Sortie:

Entrez un nombre octal: 123
Le nombre binaire est: 1010011

Explication:

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

  • Cette fonction prend une chaîne représentant un nombre octal et la convertit en un entier décimal.
  • Elle parcourt la chaîne octale de droite à gauche, et pour chaque chiffre, elle le multiplie par 8i8i et ajoute la valeur au total.

La fonction convertirDecimalEnBinaire():

  • Cette fonction prend un entier décimal et le convertit en une chaîne binaire.
  • Elle utilise une boucle while pour diviser le nombre décimal par 2 et ajouter les restes (qui correspondent aux bits) au début de la chaîne binaire.
 

Exercice 3:

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

Exemple:

Entrez un nombre octal: 77
Le nombre hexadécimal est: 3f
Solution:

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

using namespace std;

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

    // Parcourir chaque caractère de la chaîne octale de droite à 
    // gauche
    for (int i = 0; i < octal.length(); ++i) {
        decimal += (octal[octal.length() - 1 - i] - '0') * pow(8, i);
    }

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

// Fonction pour convertir un nombre décimal en hexadécimal
string convertirDecimalEnHexadecimal(int decimal) {
    stringstream ss;
    ss << hex << decimal; // Convertir en hexadécimal
    return ss.str(); // Retourner la chaîne hexadécimale
}

int main() {
    string octal;

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

    // Convertir le nombre octal en décimal
    int decimal = convertirOctalEnDecimal(octal);

    // Convertir le nombre décimal en hexadécimal
    string resultat = convertirDecimalEnHexadecimal(decimal);

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

    return 0;
}

Sortie:

Entrez un nombre octal: 77
Le nombre hexadécimal est: 3f

Explication:

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

  • Cette fonction prend une chaîne représentant un nombre octal et la convertit en un entier décimal.
  • Pour chaque chiffre du nombre octal, on le multiplie par 8i8i, où ii est la position du chiffre dans le nombre, en commençant par la droite.

La fonction convertirDecimalEnHexadecimal():

  • Cette fonction prend un entier décimal et le convertit en une chaîne hexadécimale en utilisant un flux std::stringstream.
  • L'opérateur std::hex est utilisé pour convertir le nombre en hexadécimal.
 

Exercice 4:

Écrivez une fonction C++ qui prend un tableau et renvoie le dernier élément du tableau.

Exemple:

Le dernier élément du tableau est: 1
Solution:

#include <iostream>

int getLastElement(int arr[], int size) {
    return arr[size - 1]; // Renvoie le dernier élément
}

using namespace std;

int main() {
    int tab[] = {4, 5, 3, 2, 1};

    // Obtenir le dernier élément du tableau d'entiers
    cout <<"Le dernier élément du tableau est: "<< getLastElement(tab, 5) << endl;

    return 0;
}

Sortie:

Le dernier élément du tableau est: 1

Explication:

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

  • Prend un tableau d'entiers arr et sa taille size en paramètres.
  • Renvoie le dernier élément du tableau en utilisant l'indice size - 1.
 

Exercice 5:

Écrire un programme C++ pour comparer deux nombres.

Exemple:

Entrez le premier nombre: 1
Entrez le deuxième nombre: 2
1 est plus petit que 2
Solution:

#include <iostream>

using namespace std;

int main() {
    // Déclaration de deux variables pour stocker les nombres
    int n1, n2;

    // Demander à l'utilisateur d'entrer les deux nombres
    cout << "Entrez le premier nombre: ";
    cin >> n1;
    
    cout << "Entrez le deuxième nombre: ";
    cin >> n2;

    // Comparaison des deux nombres
    if (n1 > n2) {
        cout << n1 <<" est plus grand que "<< n2 << endl;
    } else if (n1 < n2) {
        cout << n1 <<" est plus petit que "<< n2 << endl;
    } else {
        cout << n1 <<" est égal à "<< n2 << endl;
    }

    return 0;
}

Sortie:

Entrez le premier nombre: 1
Entrez le deuxième nombre: 2
1 est plus petit que 2

Explication:

Dans la conditions if-else:

  • Si num1 est plus grand que n2, il affiche que n1 est plus grand.
  • Si num1 est plus petit que n2, il affiche que n1 est plus petit.
  • Sinon, il affiche que les deux nombres sont égaux.
 

Exercice 6:

Écrire un programme C++ pour compter les lettres, les espaces, les chiffres et les autres caractères d'une chaîne saisie.

Exemple:

Entrez une chaîne de caractères:
Rue 45, Quartier Sain Denis:France
Nombre de lettres: 26
Nombre d'espaces: 4
Nombre de chiffres: 2
Nombre d'autres caractères: 2
Solution:

#include <iostream>
#include <cstring> // Pour utiliser strlen()

using namespace std;

int main() {
    // Déclaration des variables
    // Chaîne de caractères avec une taille maximale de 100
    char str[100]; 
    int lettres = 0, espaces = 0, chiffres = 0, autres = 0;

    // Demande à l'utilisateur d'entrer une chaîne de caractères
    cout << "Entrez une chaîne de caractères: ";
    // Utilisation de getline pour lire toute la ligne
    cin.getline(str, 100); 

    // Parcourir la chaîne pour compter les caractères
    for (int i = 0; i < strlen(str); i++) {
        if (isalpha(str[i])) {
            lettres++;
        } else if (isspace(str[i])) {
            espaces++;
        } else if (isdigit(str[i])) {
            chiffres++;
        } else {
            autres++;
        }
    }

    // Affichage des résultats
    cout << "Nombre de lettres: " << lettres << endl;
    cout << "Nombre d'espaces: " << espaces << endl;
    cout << "Nombre de chiffres: " << chiffres << endl;
    cout << "Nombre d'autres caractères: " << autres << endl;

    return 0;
}

Sortie:

Entrez une chaîne de caractères:
Rue 45, Quartier Sain Denis:France
Nombre de lettres: 26
Nombre d'espaces: 4
Nombre de chiffres: 2
Nombre d'autres caractères: 2

Explication:

Dans l'exercice ci-dessus, la boucle for:

  • La boucle parcourt chaque caractère de la chaîne jusqu'à la fin (longueur de la chaîne obtenue avec strlen()).
  • La fonction isalpha() vérifie si le caractère est une lettre.
  • La fonction isspace() vérifie si le caractère est un espace.
  • La fonction isdigit() vérifie si le caractère est un chiffre.
  • Les autres caractères sont classés dans la catégorie "autres".
 

Exercice 7:

Écrire un programme en C++ pour vérifier si un nombre est positif, négatif ou nul.

Exemple:

Entrez un nombre: 8
Le nombre 8 est positif.
Solution:

#include <iostream>

using namespace std;

int main() {
    // Déclaration de la variable pour stocker le nombre
    int n;

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

    // Vérification si le nombre est positif, négatif ou nul
    if (n > 0) {
        cout <<"Le nombre "<< n <<" est positif."<< endl;
    } else if (n < 0) {
        cout <<"Le nombre "<< n <<" est négatif."<< endl;
    } else {
        cout <<"Le nombre est nul."<< endl;
    }

    return 0;
}

Sortie:

Entrez un nombre: 8
Le nombre 8 est positif.

Explication:

Dans la conditions if-else:

  • Si le nombre est supérieur à 0, le programme affiche qu'il est positif.
  • Si le nombre est inférieur à 0, le programme affiche qu'il est négatif.
  • Si le nombre est égal à 0, le programme affiche qu'il est nul.
 

Exercice 8:

Écrire un programme C++ pour afficher la chaîne de caractères suivante dans un format spécifique (voir sortie).

Exemple:

Lorem ipsum dolor sit amet, 
	consectetur adipiscing elit facilisi 
		neque ad lacus velit, 
		hac suscipit suspendisse. 
Solution:

#include <iostream>

int main() {
    // Affichage de la chaîne de caractères dans un format spécifique
    std::cout << "Lorem ipsum dolor sit amet,\n \tconsectetur adipiscing elit facilisi\n \t\tneque ad lacus velit,\n \thac suscipit suspendisse." << std::endl;

    return 0;
}

Sortie:

Lorem ipsum dolor sit amet, 
	consectetur adipiscing elit facilisi 
		neque ad lacus velit, 
		hac suscipit suspendisse. 

Explication:

Les séquences de caractères \t sont utilisées pour insérer des tabulations dans la chaîne.

Les séquences de caractères \n sont utilisées pour insérer des retours à la ligne.

 

Exercice 9:

Écrire un programme C++ pour afficher les nombres impairs de 1 à 10.

Exemple:

1 3 5 7 9
Solution:

#include <iostream>

int main() {
    // Boucle pour afficher les nombres impairs de 1 à 10
    for (int i = 1; i <= 10; i++) {
        // Vérifie si le nombre est impair
        if (i % 2 != 0) { 
            std::cout << i << " ";
        }
    }

    return 0;
}

Sortie:

1 3 5 7 9

Explication:

Boucle for: La boucle commence à 1 et s'incrémente jusqu'à 10.

  • La condition i % 2 != 0 vérifie si le nombre n'est pas divisible par 2 (donc impair).
  • Si la condition est vraie, le nombre est affiché.
 

É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 *