Déterminer un carré parfait

C++C++Beginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous apprendrez à déterminer si un nombre donné est un carré parfait en C++. Un carré parfait est un nombre qui peut être exprimé comme le produit d'un entier par lui-même. Par exemple, 1, 4, 9, 16 et 25 sont des carrés parfaits car ils peuvent être exprimés respectivement comme 1×1, 2×2, 3×3, 4×4 et 5×5.

Nous allons créer un programme C++ qui utilise la fonction sqrt() de la bibliothèque standard pour calculer la racine carrée d'un nombre et déterminer s'il est un carré parfait. Ce laboratoire vous introduira aux concepts de base de la programmation en C++, notamment les fonctions, les instructions conditionnelles et les opérations mathématiques.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp(("C++")) -.-> cpp/ControlFlowGroup(["Control Flow"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/StandardLibraryGroup(["Standard Library"]) cpp/BasicsGroup -.-> cpp/data_types("Data Types") cpp/BasicsGroup -.-> cpp/operators("Operators") cpp/ControlFlowGroup -.-> cpp/conditions("Conditions") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/user_input("User Input") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/StandardLibraryGroup -.-> cpp/math("Math") subgraph Lab Skills cpp/data_types -.-> lab-96130{{"Déterminer un carré parfait"}} cpp/operators -.-> lab-96130{{"Déterminer un carré parfait"}} cpp/conditions -.-> lab-96130{{"Déterminer un carré parfait"}} cpp/output -.-> lab-96130{{"Déterminer un carré parfait"}} cpp/user_input -.-> lab-96130{{"Déterminer un carré parfait"}} cpp/files -.-> lab-96130{{"Déterminer un carré parfait"}} cpp/math -.-> lab-96130{{"Déterminer un carré parfait"}} end

Créer un nouveau fichier C++ et inclure les bibliothèques nécessaires

Dans cette étape, nous allons créer un nouveau fichier C++ et inclure les bibliothèques nécessaires pour notre programme.

Tout d'abord, créons un nouveau fichier nommé main.cpp dans le répertoire du projet :

  1. Dans le WebIDE, cliquez sur l'icône de l'Explorateur dans la barre latérale de gauche.
  2. Cliquez avec le bouton droit sur le dossier project et sélectionnez "Nouveau fichier".
  3. Nommez le fichier main.cpp et appuyez sur Entrée.

Maintenant, ajoutons les bibliothèques nécessaires à notre programme. Nous avons besoin de deux bibliothèques principales :

  • iostream : Cette bibliothèque fournit des fonctionnalités pour les opérations d'entrée et de sortie.
  • cmath : Cette bibliothèque contient des fonctions mathématiques, y compris la fonction sqrt() que nous allons utiliser.

Ajoutez le code suivant à votre fichier main.cpp :

#include <iostream>
#include <cmath>

using namespace std;

int main() {
    cout << "\nWelcome to the Perfect Square Checker Program\n\n";

    // We will add more code here in the next steps

    return 0;
}

Ce code :

  • Inclut les bibliothèques requises.
  • Utilise le namespace std pour éviter d'avoir à écrire std:: avant les fonctions de la bibliothèque standard.
  • Crée une fonction main() de base qui affiche un message de bienvenue.
  • Retourne 0 pour indiquer que l'exécution du programme s'est terminée avec succès.

Enregistrez votre fichier en appuyant sur Ctrl+S ou en sélectionnant Fichier > Enregistrer dans le menu.

Implémenter la fonction de vérification de carré parfait

Maintenant, nous allons créer une fonction qui détermine si un nombre est un carré parfait. Un carré parfait a une racine carrée entière. Par exemple, 16 est un carré parfait car sa racine carrée est exactement 4.

Ajoutez la fonction suivante au-dessus de la fonction main() dans votre fichier main.cpp :

bool isPerfectSquare(int number) {
    // Calculate the square root of the number
    double squareRoot = sqrt(number);

    // Convert the square root to an integer
    int intSquareRoot = static_cast<int>(squareRoot);

    // A number is a perfect square if squaring its integer square root gives the original number
    return (intSquareRoot * intSquareRoot == number);
}

Comprenons comment cette fonction fonctionne :

  1. La fonction prend un paramètre entier number et retourne une valeur booléenne (vrai ou faux).
  2. Nous utilisons la fonction sqrt() de la bibliothèque cmath pour calculer la racine carrée du nombre d'entrée.
  3. Nous convertissons la racine carrée en un entier en utilisant static_cast<int>(), qui supprime toute partie décimale.
  4. Si le nombre est un carré parfait, alors la multiplication de la racine carrée entière par elle-même donnera le nombre original.
  5. La fonction retourne true si le nombre est un carré parfait, et false sinon.

Par exemple :

  • Pour le nombre 16 :
    • sqrt(16) = 4.0
    • La conversion de 4.0 en entier donne 4
    • 4 × 4 = 16, qui est égal au nombre original, donc 16 est un carré parfait.
  • Pour le nombre 10 :
    • sqrt(10) ≈ 3.16227766
    • La conversion de 3.16227766 en entier donne 3
    • 3 × 3 = 9, qui n'est pas égal au nombre original, donc 10 n'est pas un carré parfait.

Votre code complet jusqu'à présent devrait ressembler à ceci :

#include <iostream>
#include <cmath>

using namespace std;

bool isPerfectSquare(int number) {
    // Calculate the square root of the number
    double squareRoot = sqrt(number);

    // Convert the square root to an integer
    int intSquareRoot = static_cast<int>(squareRoot);

    // A number is a perfect square if squaring its integer square root gives the original number
    return (intSquareRoot * intSquareRoot == number);
}

int main() {
    cout << "\nWelcome to the Perfect Square Checker Program\n\n";

    // We will add more code here in the next step

    return 0;
}

Enregistrez votre fichier avant de passer à l'étape suivante.

Compléter la fonction principale avec les entrées et sorties utilisateur

Maintenant, améliorons la fonction main() pour :

  1. Demander à l'utilisateur d'entrer un nombre.
  2. Récupérer l'entrée de l'utilisateur.
  3. Utiliser notre fonction isPerfectSquare() pour vérifier si le nombre est un carré parfait.
  4. Afficher un message approprié en fonction du résultat.

Mettez à jour votre fonction main() avec le code suivant :

int main() {
    cout << "\nWelcome to the Perfect Square Checker Program\n\n";

    int userNumber;

    // Prompt the user to enter a number
    cout << "Please enter a positive integer: ";
    cin >> userNumber;

    // Check if the entered number is a perfect square
    if (isPerfectSquare(userNumber)) {
        int squareRoot = static_cast<int>(sqrt(userNumber));
        cout << "\nThe number " << userNumber << " is a perfect square!" << endl;
        cout << "It is equal to " << squareRoot << " × " << squareRoot << endl;
    } else {
        cout << "\nThe number " << userNumber << " is not a perfect square." << endl;
    }

    cout << "\nThank you for using the Perfect Square Checker Program!\n" << endl;

    return 0;
}

Comprenons ce que ce code fait :

  1. Nous déclarons une variable entière userNumber pour stocker l'entrée de l'utilisateur.
  2. Nous demandons à l'utilisateur d'entrer un entier positif en utilisant cout.
  3. Nous lisons l'entrée de l'utilisateur en utilisant cin et la stockons dans userNumber.
  4. Nous appelons notre fonction isPerfectSquare() avec userNumber comme argument.
  5. Si le nombre est un carré parfait :
    • Nous calculons sa racine carrée et la stockons dans squareRoot.
    • Nous affichons un message indiquant que le nombre est un carré parfait.
    • Nous montrons quels deux entiers identiques se multiplient pour donner le nombre original.
  6. Si le nombre n'est pas un carré parfait :
    • Nous affichons un message indiquant que le nombre n'est pas un carré parfait.
  7. Enfin, nous affichons un message de remerciement et nous sortons de la fonction main().

Votre programme complet devrait maintenant ressembler à ceci :

#include <iostream>
#include <cmath>

using namespace std;

bool isPerfectSquare(int number) {
    // Calculate the square root of the number
    double squareRoot = sqrt(number);

    // Convert the square root to an integer
    int intSquareRoot = static_cast<int>(squareRoot);

    // A number is a perfect square if squaring its integer square root gives the original number
    return (intSquareRoot * intSquareRoot == number);
}

int main() {
    cout << "\nWelcome to the Perfect Square Checker Program\n\n";

    int userNumber;

    // Prompt the user to enter a number
    cout << "Please enter a positive integer: ";
    cin >> userNumber;

    // Check if the entered number is a perfect square
    if (isPerfectSquare(userNumber)) {
        int squareRoot = static_cast<int>(sqrt(userNumber));
        cout << "\nThe number " << userNumber << " is a perfect square!" << endl;
        cout << "It is equal to " << squareRoot << " × " << squareRoot << endl;
    } else {
        cout << "\nThe number " << userNumber << " is not a perfect square." << endl;
    }

    cout << "\nThank you for using the Perfect Square Checker Program!\n" << endl;

    return 0;
}

Enregistrez votre fichier avant de passer à l'étape suivante.

Compiler et tester le programme

Maintenant que nous avons terminé notre programme en C++, il est temps de le compiler et de le exécuter. La compilation convertit notre code lisible par l'homme en un programme exécutable par la machine.

Compiler le programme

Ouvrez un terminal dans le WebIDE en cliquant sur "Terminal" dans le menu et en sélectionnant "New Terminal".

Dans le terminal, accédez au répertoire du projet :

cd ~/project

Compilez le programme en utilisant le compilateur g++ :

g++ main.cpp -o perfect_square_checker

Cette commande indique au compilateur de :

  • Prendre notre fichier source main.cpp
  • Le compiler en un exécutable nommé perfect_square_checker

Si la compilation réussit, vous ne verrez aucun message de sortie. En cas d'erreurs, lisez les messages d'erreur, corrigez les problèmes dans votre code et essayez de compiler à nouveau.

Exécuter le programme

Après avoir compilé le programme avec succès, exécutez-le en utilisant :

./perfect_square_checker

Le programme démarrera et vous demandera d'entrer un entier positif.

Tester avec différentes entrées

Testons notre programme avec différentes entrées pour vérifier qu'il fonctionne correctement :

Cas de test 1 : Un carré parfait

Entrez 16 lorsque vous y êtes invité. Vous devriez voir une sortie similaire à :

Please enter a positive integer: 16

The number 16 is a perfect square!
It is equal to 4 × 4

Thank you for using the Perfect Square Checker Program!

Cas de test 2 : Pas un carré parfait

Exécutez le programme à nouveau et entrez 10 lorsque vous y êtes invité. Vous devriez voir une sortie similaire à :

Please enter a positive integer: 10

The number 10 is not a perfect square.

Thank you for using the Perfect Square Checker Program!

Cas de test 3 : Un autre carré parfait

Exécutez le programme à nouveau et entrez 25 lorsque vous y êtes invité. Vous devriez voir une sortie similaire à :

Please enter a positive integer: 25

The number 25 is a square square!
It is equal to 5 × 5

Thank you for using the Perfect Square Checker Program!

En testant avec différentes entrées, vous pouvez vérifier que votre programme identifie correctement les carrés parfaits et les non-carrés parfaits.

Félicitations ! Vous avez créé avec succès un programme en C++ qui détermine si un nombre est un carré parfait.

Résumé

Dans ce laboratoire, vous avez créé avec succès un programme en C++ qui détermine si un nombre est un carré parfait. Revoyons ce que vous avez accompli :

  1. Vous avez appris à inclure les bibliothèques nécessaires dans un programme en C++ :

    • iostream pour les opérations d'entrée et de sortie
    • cmath pour les fonctions mathématiques telles que sqrt()
  2. Vous avez implémenté la fonction isPerfectSquare() qui utilise une approche mathématique pour déterminer si un nombre est un carré parfait :

    • Calculer la racine carrée du nombre
    • Vérifier si le carré de la partie entière de la racine carrée est égal au nombre original
  3. Vous avez créé une interface conviviale dans la fonction main() qui :

    • Demande à l'utilisateur d'entrer un nombre
    • Utilise la fonction isPerfectSquare() pour vérifier si le nombre est un carré parfait
    • Affiche un message approprié en fonction du résultat
  4. Vous avez compilé et testé votre programme avec différentes entrées pour vérifier son fonctionnement.

Grâce à ce laboratoire, vous avez acquis une expérience pratique avec plusieurs concepts de programmation en C++ importants :

  • Création et appel de fonctions
  • Utilisation d'instructions conditionnelles (if-else)
  • Traitement des entrées et sorties utilisateur
  • Effectuation de conversions de type
  • Utilisation de fonctions mathématiques de la bibliothèque standard
  • Compilation et exécution d'un programme en C++

Vous pouvez améliorer davantage ce programme en ajoutant des fonctionnalités telles que :

  • Validation des entrées pour garantir que l'utilisateur entre un entier positif
  • La possibilité de vérifier plusieurs nombres sans redémarrer le programme
  • Recherche du carré parfait le plus proche d'un nombre non carré parfait

En continuant à pratiquer et à développer ces concepts fondamentaux, vous développerez des compétences de programmation en C++ plus solides que vous pourrez appliquer à des problèmes plus complexes.