Considérant le programme C++ ci-dessous, pour lequel vous trouverez un exécutable de démonstration ici (dont l'exécution dépend du Runtime de Visual Studio 2022), et sans modifier une seule ligne du fichier dont les sources suivent immédiatement...
Note : prenez soin de configurer votre projet pour qu'il utilise la version la plus à jour du langage (dans Visual Studio, une fois le projet créé, faites Projet → Propriétés → Général → Norme du langage et utilisez « Aperçu - Fonctionnalités du dernier brouillon de travail en C++ (/std:c++latest) »
#include "Devinette.h"
#include <iostream>
int main() {
using std::cerr, std::cin, std::cout, std::endl;
cout << "Bienvenue au jeu des devinettes\n";
cout << "Entrez un nombre entre "
<< Devinette::VALEUR_MIN
<< " et "
<< Devinette::VALEUR_MAX
<< " inclusivement: ";
Devinette d;
int nombre;
do {
while (!(cin >> nombre && Devinette::est_valide(nombre))) {
cerr << "Entrez un nombre entre "
<< Devinette::VALEUR_MIN
<< " et "
<< Devinette::VALEUR_MAX
<< " inclusivement: ";
}
switch (d.essayer(nombre)) {
case Devinette::TROP_GRAND:
cout << "Le nombre " << nombre
<< " est trop grand; essayez a nouveau\n";
break;
case Devinette::TROP_PETIT:
cout << "Le nombre " << nombre
<< " est trop petit; essayez a nouveau\n";
break;
// les autres cas possibles sont SUCCES et AUCUN_TEST
}
} while (!d.est_reussi());
cout << "Vous avez reussi en " << d.nombre_essais() << " essais" << endl;
}
Rédigez la classe Devinette. Quand vous aurez produit votre propre version, vous pourrez comparer avec celle proposée ici (attention : l'idée ici n'est pas d'être dogmatique mais bien d'ouvrir le champ de la discussion et d'amener des questionnements). Notez que les sources avec lesquelles je vous propose de comparer sont perfectibles : l'algorithme pour vérifier si un nombre prospectif est valide pourrait être plus général à peu de frais, et idéalement aucun #include ne serait requis dans le fichier Devinette.h.
Questions pour vous :
![]() |
Vous trouverez ici quelques fichiers C++ proposant une solution possible au problème du petit jeu de devinette. Ceci vous permettra de comparer ce que vous avez vous-même produit avec du code source qui, sans être transcendant, exploite quelques techniques contemporaines. |