Soyez le premier à donner votre avis sur cette source.
Vue 4 631 fois - Téléchargée 133 fois
#include <iostream.h> #include <stdlib.h> #include <time.h> int nb,nb2; void Init() { srand( (unsigned)time( NULL ) ); } // Fonction hazar qui choisit un nombre au hazar entre 2 et 9 void hazar() { nb=0; nb2=0; while (nb < 2) nb=rand() % 10; while (nb2 < 2) nb2=rand() % 10; } //Fonction Cherche qui pose la question et verifie que la reponce est juste void Cherche() { int reponce, trouve; trouve = 0; hazar(); while (trouve ==0) { cout <<"Combien font " << nb << " x " << nb2 << "? \n"; cin >> reponce; if (reponce == nb*nb2) { cout <<"Bravo c exact \n"; trouve = 1; } else { cout <<"Non c faut \n"; } } } //Fonction main qui execute le programme et qui vous donne le temps. void main() { Init(); int nbfois = 0; long deb=time(NULL); while (nbfois < 6) { Cherche(); nbfois=nbfois+1; } cout <<"duree : " << time(NULL)-deb <<"secondes \n"; char fin; cin>>fin; }
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...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.