Multiplications: petit exercice de maths

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 859 fois - Téléchargée 18 fois

Contenu du snippet

Ce programme très simple vous demande de trouver le produit d'une multiplication au hasard, compte le temps que vous prenez et le nombre d'erreurs et vous donne une note.

Source / Exemple :


#include <iostream>
#include <ctime>
#include <windows.h>
#include <cmath>
#include <string>
#include <string>
using namespace std;
static SYSTEMTIME st;

double temps (float temps_debut)
{
GetSystemTime(&st);
float secondes = st.wHour*3600 + st.wMinute*60 + st.wSecond;
if (temps_debut < 0) //c'est le début du "chronomètre)
{return secondes;}
else //c'est la fin du chronomètre
{return secondes - temps_debut;}    
    
}    

int random (int min, int max)
{       
int random_integer;
for(int index=0; index<20; index++)
{random_integer = (rand()%max)+min;}
return random_integer;
} 

void intro (int time, int nombre_de_multiplications, int level)
{ cout << "Dans " << time << " secondes, "<< nombre_de_multiplications << " multiplications a la difficulte " << level << " te seront posees auquelles \n";
cout << "tu doit repondre sans te tromper et le plus vite possible\nBonne chance!\n";
Sleep (1000*time);
cout << "\t\t\t\t  Temps pris  Erreur(s)  Gain/Perte    Total" <<endl;
}

int main(int argc, char *argv[])
{
srand ((unsigned)time(0));
bool fastmode;
string mode;
double answer=0, total =0, diff, a, b, erreur, conteur=0;
int level, x=0, vitesse,ndm;
string gain_perte, continuer;

while (x!=1){
cout << "modes\n1. rapide\n2. long\n3. court\n4. normal\n5. dur\n6. personalise\nmode ";
cin >> mode; 
if (mode=="rapide" || mode =="1")
{intro(1,10,1);x=1; level=1;ndm=10;vitesse=0;}

if (mode=="long" || mode =="2")
{intro(5,10,1);x=1; level=1;ndm=25;vitesse=1;}

if (mode=="court"|| mode =="3")
{intro(5,10,1);x=1; level=1;ndm=4;vitesse=1;}

if (mode=="normal"|| mode =="4")
{intro(5,10,1);x=1; level=1;ndm=10;vitesse=1;}

if (mode=="dur"|| mode =="5")
{intro(5,10,2);x=1; level=2;ndm=10;vitesse=1;}

if (mode=="personalise"|| mode =="6")
{cout << "vitesse(s): ";
cin >> vitesse;
cout << "nombre de multiplications: ";
cin >> ndm;
cout << "niveau(1-3 conseille): ";
cin >> level;                                             
intro(vitesse,ndm,level);x=1;}

}

  
while (continuer != "non" && conteur<ndm)
{
double chrono = temps(-1);
a=random(-3 + 4*level,8+2*level), b=random(-3 + 4*level,8+2*level), erreur=-1;

while (a*b != answer){
cout << a << "x" << b << "=";
cin >> answer;
erreur++;}

chrono = temps(chrono);
diff = (5*level-chrono-2*erreur)/2;
total = total + diff;

if (chrono<0) {gain_perte = "\t Perte:";}
if (chrono>0) {gain_perte = "\t Gain: ";}
if (chrono==0) {gain_perte = "\t       ";}

cout << "\t\t\t\t\t" << chrono; 
cout << "s\t " << erreur; 
cout << gain_perte << sqrt(diff*diff)  <<"   Total: " << total <<endl;    

conteur++;
answer = 0;    
Sleep(1000*vitesse);
}    

cout << "\n\nTotal: " << total << " / " << ndm*2 << "\n" ;   
system ("pause");    
return 0;    
}

A voir également

Ajouter un commentaire

Commentaires

cs_Lucky92
Messages postés
180
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
16 août 2012
2 -
Je suis trop fort !

J'ai fait 175.5 / 20 en mode dur !

modes
1. rapide
2. long
3. court
4. normal
5. dur
6. personalise
mode 5
Dans 5 secondes, 10 multiplications a la difficulte 2te seront posees auquelles
tu doit repondre sans te tromper et le plus vite possible
Bonne chance!
Temps pris Erreur(s) Gain/Perte Total
6x11=66
2s 0 Gain: 19 Total: 19
10x9=90
2s 0 Gain: 19 Total: 38
11x6=66
1s 0 Gain: 19.5 Total: 57.5
9x11=99
2s 0 Gain: 19 Total: 76.5
10x8=80
1s 0 Gain: 19.5 Total: 96
15x16=180
15x16=240
26s 1 Gain: 5 Total: 101
6x11=66
2s 0 Gain: 19 Total: 120
6x10=60
1s 0 Gain: 19.5 Total: 139.5
10x14=140
2s 0 Gain: 19 Total: 158.5
6x13=78
6s 0 Gain: 17 Total: 175.5

Total: 175.5 / 20
Appuyez sur une touche pour continuer...
cs_Lucky92
Messages postés
180
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
16 août 2012
2 -
Salut,

ton code ne compilait, j'ai dû faire les modifications suivantes :
- ajout de #include <string>
- remplacement de "or" par ||
- remplacement de "and" par &&

J'ai également supprimé des warnings :
- remplacement de "float" par "double"
- suppression de la variable fastmode

J'ai également supprimé les includes inutiles à savoir :
- #include <cstdio>
- #include <cstdlib>
- #include <stdio.h>
- #include <conio.h>
- #include <dos.h>

Enfin j'ai remplacé :

- #include <time.h> par #include <ctime>
- #include <math.h> par #include <cmath>

L'idée du programme est bonne ! Bonne continuation.
gmorris
Messages postés
2
Date d'inscription
dimanche 7 octobre 2007
Statut
Membre
Dernière intervention
18 novembre 2009
-
Merci beaucoup pour ton commentaire, lucky92: j'ai toujours du mal à savoir quels include il faut ou pas. Je pensait pas que ca serait possible de faire autant de points en mode dur (t'as eu de la chance: beaucoup de multiplications par 11 ou par 10) et tu dois vraiment être très bon: 6x13=78 en 6s. Bravo! Je vais rendre le mode dur un peu plus dur...

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.