gillig
Messages postés32Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 4 décembre 2003 7 oct. 2003 à 16:18
Petites suggestions pour ce code :
- la fonction "Init" ne sert à rien, elle n'est appellée qu'une fois, autant mettre "srand" dans le main.
- il vaut mieux éviter d'utiliser des variables globales ("nb" et "nb2") => la fonction "hazar" doit être réécrite pour retourner une seule valeur au hasard (sans le "while" actuel d'ailleurs), et la déclaration des 2 variables déplacée dans la fonction "Cherche".
- dans la fonction Cherche, on peut remplacer le "while" par un "do {...} while()", ce qui évite de tester dès le début la variable "trouve", qu'on vient d'initialiser ; par ailleurs, typer cette variable en bool, puisque elle ne peut prendre que 2 valeurs.
- dans le main, utiliser une boucle for.
voici :
#include
#include <stdlib.h>
#include <time.h>
using namespace std;
// Retourne un nombre au hasard entre min et max (compris)
int hazar(int min, int max)
{
if (min > max)
{ // si besoin, on inverse min et max
int tmp max; max min; min = tmp;
}
return (rand() % (max + 1 - min)) + min;
}
// Pose la question et verifie que la reponse est juste
void Cherche()
{
int nb, nb2, reponse;
bool trouve;
nb = hazar(2, 9);
nb2 = hazar(9, 2); // 9,2 histoire de vérifier que ça marche aussi dans ce sens
do
{
cout << "Combien font " << nb << " x " << nb2 << "?
";
cin >> reponse;
trouve (reponse nb*nb2);
if (trouve)
cout <<"Bravo c exact
";
else
cout <<"Non c faut
";
} while (!trouve);
}
void main()
{
srand((unsigned) time(NULL));
long deb = time(NULL);
for (int nbfois = 0; nbfois < 6; nbfois++)
Cherche();
cs_Ephedrine
Messages postés17Date d'inscriptionsamedi 30 août 2003StatutMembreDernière intervention 2 juin 2006 5 oct. 2003 à 18:58
J'ai fait le même type de programme, mais avec une fenêtre windows, c'est mieux ! (enfin en toute modestie, bien sur !)
Nitrotik
Messages postés5Date d'inscriptionlundi 16 juin 2003StatutMembreDernière intervention28 février 2004 5 oct. 2003 à 14:46
Oui, bien sur, il reste beaucoup de chose a faire, mais, je me suis mis au C++ aps plus tard qu'il y a 1 semaine ;)
Deja, jaimerai le faire fonctionner dans une boite de dialogue, dans une fentre windows quoi, pasque la console, ca va un moment :(
lapindu59
Messages postés7Date d'inscriptionmercredi 16 juillet 2003StatutMembreDernière intervention 5 octobre 2003 5 oct. 2003 à 14:38
tu pourrais le mettre en graphique...
faire un compteur de temps en graphique,
faire un interface style calculette, mettre des difficultés(1, 2,3 chiffres...)tu peut faire plein de trucs...
7 oct. 2003 à 16:18
- la fonction "Init" ne sert à rien, elle n'est appellée qu'une fois, autant mettre "srand" dans le main.
- il vaut mieux éviter d'utiliser des variables globales ("nb" et "nb2") => la fonction "hazar" doit être réécrite pour retourner une seule valeur au hasard (sans le "while" actuel d'ailleurs), et la déclaration des 2 variables déplacée dans la fonction "Cherche".
- dans la fonction Cherche, on peut remplacer le "while" par un "do {...} while()", ce qui évite de tester dès le début la variable "trouve", qu'on vient d'initialiser ; par ailleurs, typer cette variable en bool, puisque elle ne peut prendre que 2 valeurs.
- dans le main, utiliser une boucle for.
voici :
#include
#include <stdlib.h>
#include <time.h>
using namespace std;
// Retourne un nombre au hasard entre min et max (compris)
int hazar(int min, int max)
{
if (min > max)
{ // si besoin, on inverse min et max
int tmp max; max min; min = tmp;
}
return (rand() % (max + 1 - min)) + min;
}
// Pose la question et verifie que la reponse est juste
void Cherche()
{
int nb, nb2, reponse;
bool trouve;
nb = hazar(2, 9);
nb2 = hazar(9, 2); // 9,2 histoire de vérifier que ça marche aussi dans ce sens
do
{
cout << "Combien font " << nb << " x " << nb2 << "?
";
cin >> reponse;
trouve (reponse nb*nb2);
if (trouve)
cout <<"Bravo c exact
";
else
cout <<"Non c faut
";
} while (!trouve);
}
void main()
{
srand((unsigned) time(NULL));
long deb = time(NULL);
for (int nbfois = 0; nbfois < 6; nbfois++)
Cherche();
cout << "duree : " << time(NULL) - deb << " secondes
";
char fin;
cin >> fin;
}
5 oct. 2003 à 18:58
5 oct. 2003 à 14:46
Deja, jaimerai le faire fonctionner dans une boite de dialogue, dans une fentre windows quoi, pasque la console, ca va un moment :(
5 oct. 2003 à 14:38
faire un compteur de temps en graphique,
faire un interface style calculette, mettre des difficultés(1, 2,3 chiffres...)tu peut faire plein de trucs...