Nombre maximal d'essaie (C++)

KrisJ -  
 KrisJ -
Bonjour,
Je construit un programme pour mon cours et il me reste 1 bug !! et bien sure je n'arrive pas a trouver la solution...
Mon programme construit une opération arithmetique pour permettre a lutilisateur de tester ses capacités mathématique! Il choisit entre +,-,* ou /. il a 5 chances, si apres 5 fois il ne reussit pas a trouver, le programme lui donne la bonne réponse!

Ensuite, le menu se ré-affiche (cela jusqua ce que l'utilisateur décide de quitter avec 'Q')

mon problème est que si l'utilisateur choisit encore la même opération et que la derniere fois et que cette derniere fois la il avait utiliser les 5 chances...et bien plus rien ne marche :( !

Voila mon C++ :

#include <iostream>
using namespace std;
void main() {
int i, j, k, l, NombreSecret1, NombreSecret2, REP, A;
char CO;
i=0, j=0, k=0, l=0;


do {
cout << "\n =========================== \n";
cout << " TEST DE D'ARITHMETIQUES \n";
cout << " =========================== \n";
cout << " + : Addition\n";
cout << " - : Soustraction\n";
cout << " * : Multiplication\n";
cout << " / : Division\n";
cout << " ? : Aide\n";
cout << " q : Quitter\n";
cout << " =========================== \n";
cout << " Choix = ";
cin >> CO;

NombreSecret1 = rand() % 50 +1;
NombreSecret2 = rand() % 50 +1;

switch (CO) {
case '+' :
cout <<"\n Addition\n";
do{
cout << NombreSecret1;
cout << "+";
cout << NombreSecret2;
cout << "= ";
cin >> REP;
i++;
A = NombreSecret1 + NombreSecret2;
if ((REP!=A) && (i<5)) cout <<" Faux! Essayer a nouveau:\n";
if (REP==A) cout <<" Exact!";}
while ((REP!=A) && (i!=5));
if ((REP!=A) && (i==5)) {cout <<" Nombre maximal d erreurs atteint\n la bonne reponse etait:";
cout << A;}


break;

case '-':
cout <<"\n Soustraction\n";
do{
cout << NombreSecret1;
cout << "-";
cout << NombreSecret2;
cout <<"=";
cin >> REP;
j++;
A = NombreSecret1 - NombreSecret2;
if ((REP!=A) && (j<5)) cout <<" Faux! Essayer a nouveau:\n";
if (REP==A) cout <<" Exact!";}
while ((REP!=A) && (j!=5));
if ((REP!=A) && (j==5)) {cout <<" Nombre maximal d erreurs atteint\n la bonne reponse etait:";
cout << A;}

break;

case '*':
cout <<"\n Multiplication\n";
do{
cout << NombreSecret1;
cout << "*";
cout << NombreSecret2;
cout <<"=";
cin >> REP;
k++;

A = NombreSecret1 * NombreSecret2;
if ((REP!=A) && (k<5)) cout <<" Faux! Essayer a nouveau:\n";
if (REP==A) cout <<" Exact!";}
while ((REP!=A) && (k!=5));
if ((REP!=A) && (k==5)) {cout <<" Nombre maximal d erreurs atteint\n la bonne reponse etait:";
cout << A;}

break;

case '/':
cout <<"\n Division\n";
do{
cout << NombreSecret1;
cout << "/";
cout << NombreSecret2;
cout <<"=";
cin >> REP;
l++;

A = NombreSecret1 / NombreSecret2;
if ((REP!=A) && (l<5)) cout <<" Faux! Essayer a nouveau:\n";
if (REP==A) cout <<" Exact!";}
while ((REP!=A) && (l!=5));
if ((REP!=A) && (l==5)) {cout <<" Nombre maximal d erreurs atteint\n la bonne reponse etait:";
cout << A;}
break;

case '?':
cout <<"\n Fonction Aide\n";
cout <<" Ce programme evalue vos capacites de calcul.\n";
cout <<" Vous devez choisir l operation sur laquelle \n vous serez evalue parmi +, - / ou * \n ";
cout <<"Le programme prend au hasard 2 nombres, compose l expression arithmetique \n et demande de donner le resultat.\n";
cout <<" Si le resultat est exact, le programme affiche exact. \n";
cout <<" Dans le cas contraire, le programme donne une autre chance a l utilisateur \n de trouver le resultat.\n";
cout <<" Si l utilisateur se trompe 5 fois, \n";
cout <<" le programme affiche le resultat et affiche de nouveau le menu principal.\n";
break;

case 'q':
cout <<"Aurevoir!\n";
break;

case 'Q':
cout <<"Aurevoir!\n";
break;

default:
cout <<"\nEntrer invalide\n";
break;

}

}
while ((CO!='Q') && (CO!='q'));

}

4 réponses

Jull23
 
Je ne suis pas sur, mais est ce que tu réinitialises tes variables de ton compteurs de chances ?
1
KrisJ
 
non j'utilise toujours la même variable.. y a-t-il un moyen de la réinitaliser ?
0
Utilisateur anonyme
 
Salut!


NombreSecret2 = ......

i=j=k=l=0;

switch (CO) { ........
1
KrisJ
 
j'essaie toute de suite :)
0
KrisJ
 
WOW enfin! 100000 fois merci !!!! :)
0
KrisJ
 
..personne ne connait la solution ? :(
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
et bien remettre tes variables i,j k et l à zéro avant de recommencer la grosse boucle peut-être ?
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
ou plutot : à la fin de chaque opération, une fois que c'est réussi, remettre la variables correspondante à zéro.
0
KrisJ
 
c'est ce quon ma conseillé un peu plu haut (réinitialiser les variables), mais je n'est jamais fait cela avant. Comment faire s.v.p? :)
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
ben i=0 ...

au bon endroit !
0
KrisJ
 
wain sa j'avais deviner. je me demandais où et avec quelle instruction..
0