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.
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 :
- Dans le WebIDE, cliquez sur l'icône de l'Explorateur dans la barre latérale de gauche.
- Cliquez avec le bouton droit sur le dossier
projectet sélectionnez "Nouveau fichier". - Nommez le fichier
main.cppet 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 fonctionsqrt()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 stdpour éviter d'avoir à écrirestd::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 :
- La fonction prend un paramètre entier
numberet retourne une valeur booléenne (vrai ou faux). - Nous utilisons la fonction
sqrt()de la bibliothèquecmathpour calculer la racine carrée du nombre d'entrée. - Nous convertissons la racine carrée en un entier en utilisant
static_cast<int>(), qui supprime toute partie décimale. - 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.
- La fonction retourne
truesi le nombre est un carré parfait, etfalsesinon.
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 :
- Demander à l'utilisateur d'entrer un nombre.
- Récupérer l'entrée de l'utilisateur.
- Utiliser notre fonction
isPerfectSquare()pour vérifier si le nombre est un carré parfait. - 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 :
- Nous déclarons une variable entière
userNumberpour stocker l'entrée de l'utilisateur. - Nous demandons à l'utilisateur d'entrer un entier positif en utilisant
cout. - Nous lisons l'entrée de l'utilisateur en utilisant
cinet la stockons dansuserNumber. - Nous appelons notre fonction
isPerfectSquare()avecuserNumbercomme argument. - 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.
- Nous calculons sa racine carrée et la stockons dans
- Si le nombre n'est pas un carré parfait :
- Nous affichons un message indiquant que le nombre n'est pas un carré parfait.
- 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 :
Vous avez appris à inclure les bibliothèques nécessaires dans un programme en C++ :
iostreampour les opérations d'entrée et de sortiecmathpour les fonctions mathématiques telles quesqrt()
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
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
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.



