Bonjour la communauté,
J’aimerai avoir un peu d'aide sur un problème récurrent de mon code.
Ma fonction saisi_comb() me permet d'entrer la combinaison supposée par le joueur.
Cette combinaison est en faite un nombre (sous forme d'une suite d'entier) qui sera découpé pour vérifier s'il correspond a la combinaison initiale (j'aurais pus utiliser une chaîne de caractères a la place mais j'ai pris un autre choix de conception).
Pour découper mon nombre je récupère la partie d'une division.
Par contre l'invite de commande affiche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 long saisi_comb(long* tablo) { cout<<"Saisisser la combinaison suppose (entier)"<<endl; int combinaison; int return_val = 1; int rang=0; cin>>combinaison; int temp=0; if ( (combinaison/pow(10,TAI-1))>1 && (combinaison/pow(10,TAI))<1 ) //on verifit que combinaison comporte bien TAI nombres { for (int cpt = TAI-1; cpt>=0; cpt--) { if (return_val==1) //tant que les condition ci-dessous sont vraie { temp = combinaison/pow(10,cpt); //on recupere la partie entiere de la division if (temp >0 && temp<9) { cout<<" combinaison (in function 2) ["<<cpt<<"] : "<<combinaison<<endl; tablo[rang]=temp; //cout<<" -->temp*pow(10,cpt) : "<<temp*pow(10,cpt)<<endl; //cout<<" -->combinaison - (temp*pow(10,cpt)) = "<<combinaison<<" - "<<(temp*pow(10,cpt))<<" = "<<combinaison - (temp*pow(10,cpt))<<endl; combinaison = combinaison - (temp*pow(10,cpt)); //pourquoi pour cpt=3 il soustrait -1 au dernier nombre de la chaine. Pourquoi effectue t'il le calcul suivant : combinaison - (temp*pow(10,3)) -1 cout<<" combinaison (in function 2) 1 : "<<combinaison<<endl; rang++; } else { return_val= 0 ; } } } } else { return_val=0; //cout<<"condition 1 fausse"<<endl; } return return_val; }
J'arrive pas a comprendre pourquoi lorsque le compteur cpt = 3, j'ai ma chaîne combinaison soustraite de un en trop .Combi initiale:
7.1.2.6.8
Saisisser la combinaison suppose (entier)
71268
combinaison (in function 2) [4] : 71268
combinaison (in function 2) 1 : 1268
combinaison (in function 2) [3] : 1268
combinaison (in function 2) 1 : 267
combinaison (in function 2) [2] : 267
combinaison (in function 2) 1 : 67
combinaison (in function 2) [1] : 67
combinaison (in function 2) 1 : 7
combinaison (in function 2) [0] : 7
combinaison (in function 2) 1 : 0
Pourquoi se passe t'il :
J'utilise Code::Block 10.05.
Code : Sélectionner tout - Visualiser dans une fenêtre à part combinaison = combinaison - (temp*pow(10,3)) - 1;
Merci pour votre aide
Kosen
Partager