Programme de revision des tables de multiplications

Soyez le premier à donner votre avis sur cette source.

Vue 4 134 fois - Téléchargée 112 fois

Description

Bonjour,
Le programme de revision des tables de multiplications, vous pose 6 multiplications a 2 chiffres ( exemple : 4x7 ), et ensuite compte le temps (en secondes ) que vous avez mis pour resoudre les 6 multiplications.
Il ne choisit pas le chiffre 1 ( vous n'aurez pas de 1x5 ; 1x9 ...ect )
Si vous repondez faux a une multiplication, il vous la repose jusqu'a ce que vous trouvez la bonne reponce.
Je tient a preciser que c'est mon premier programme en C++, alors soyez indulgent ;) .

Source / Exemple :


#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;
}

Conclusion :


Ce programme s'execute en console MS-DOS,
Je n'ai pas recenser de bug, mais il faut dire qu'il n'est pas bien complexe.
Si vous voulez l'ameliorer, il n'y a pas de probleme, c'est ouvert a tous, par contre, un petit mail a Nitrotik@foudre.net serait gentil, histoire de me montrer ce que vous avez fait ;)
Ciao

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

gillig
Messages postés
32
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
4 décembre 2003
-
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();

cout << "duree : " << time(NULL) - deb << " secondes
";

char fin;
cin >> fin;
}
cs_Ephedrine
Messages postés
17
Date d'inscription
samedi 30 août 2003
Statut
Membre
Dernière intervention
2 juin 2006
-
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és
5
Date d'inscription
lundi 16 juin 2003
Statut
Membre
Dernière intervention
28 février 2004
-
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és
7
Date d'inscription
mercredi 16 juillet 2003
Statut
Membre
Dernière intervention
5 octobre 2003
-
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...

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.

Du même auteur (Nitrotik)