re-bonjour à tous ,
mes problèmes de compréhension de mon code continuent ....
Pour ceux qui auraient suivi mon post précédent je n'ajoute que la fonction traiterCarre() que voici :
à l'exécution on se trouve avec un boucle sans fin;
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 void traiterCarre(int index) { int nBrelan=0,nCarte,handValue,i,j; struct Carte *family; while(brelanCarre[index][nBrelan]) { fprintf(stdout,"index = %d\tnBrelan = %d\n",index,nBrelan); nCarte = 0; while((i = (brelanCarre[index][nBrelan] + nCarte)->rang)) { // Remplissage du tableau groups; family = getColor((brelanCarre[index][nBrelan] + nCarte)->color); (family + i)->used = index;// marquage de la carte dans groups et donne donne[(family + i)->place].used = index;// selon le niveau totaux[i]--;family->rang--; copyKill(family + i,groups); nCarte++; } if(brelanCarre[index+1]) {// d'autre carrés à traiter traiterCarre(index+1); } else {// l'évaluation de la main peut commencer setSuite(coeur); setSuite(trefle); setSuite(carreau); setSuite(pique); setNulle(coeur,carreau,trefle,pique); handValue = evalLowCost(); if(handValue < defaultBest) {// on trouve une meilleure main for(j=nulles[0].rang;j>0;j--) copyKill(nulles + j,bestHand); defaultBest = handValue; } } afficheMain(); // nouvelle main avec prise en compte des cartes marquées setMain_1(index); nBrelan += 1;// brelan suivant } }
or, grâce au fprintf (avec \n en fin , merci Sve@r) , les valeurs de "index" et de "nBrelan" restent à zéro ?!
Je trouve cela plutôt anormal car soit :
1) appel récursif de traiterCarre => index+1
2) pas d'appel récursif => nBrelan+1
Quel est le problème ?
Partager