Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2408 connectés 

  FORUM HardWare.fr
  Programmation
  C

  appel recursif qui ne marche pas

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

appel recursif qui ne marche pas

n°1573902
clawfire
Posté le 12-06-2007 à 16:49:11  profilanswer
 

Voila j'ai un problème avec ce code :

Code :
  1. void colorier (int c,int i, int j)
  2. {
  3. int i_suiv=i,j_suiv=j,c_suiv;
  4. Liste ind;
  5. G[i_suiv][j_suiv]=c;
  6. affichage_grille(G);
  7. nbcc++;
  8. if (nbcc==81)
  9. {
  10. printf("\n nbcc=%d\n",nbcc);
  11. nbsol++;
  12. affichage_grille(G);
  13. }
  14. else
  15. {
  16. printf("\n else ok\n" );
  17. while (G[i_suiv][j_suiv]!=0)
  18.  {
  19.  printf("while ok\n" );
  20.  if (j_suiv<=7)
  21.   {
  22.   printf("if ok\n" );
  23.   j_suiv++;
  24.   }
  25.  else
  26.   {
  27.   printf("else2 ok\n" );
  28.   if (i_suiv<=7){i_suiv++;j_suiv=0;}
  29.   else printf("fin\n" );
  30.   }
  31.  printf("prelsite\n" );
  32.  ind=T[i_suiv][j_suiv];
  33.  printf("suivante c ok\n" );
  34.  while (ind!=NULL)
  35.   {
  36.    printf("while 2 ok\n" );c_suiv=ind->valeur;
  37.    if (admissible(c_suiv,i_suiv,j_suiv)==0)
  38.    {
  39.    printf("||ajout||" );
  40.    colorier(c_suiv,i_suiv,j_suiv);
  41.    }
  42.    printf("ifpasse" );
  43.    ind=ind->suivant;
  44.   }
  45.  }
  46.    }                     
  47. G[i][j]=0;
  48. nbcc--;
  49. }


 
C'est un sudoku et cette fonction doit mettre une valeur dans la grille et passer a la case suivante la colorier et tester a chaque fois si une valeur de T (contenant les valeurs possibles) n'est pas contraire aux regles du jeu. Cependant voici le resultat qui ca me donne :
 

Code :
  1. +---+---+---+
  2. |304|690|001|
  3. |090|003|000|
  4. |600|010|089|
  5. +---+---+---+
  6. |070|100|004|
  7. |042|000|190|
  8. |900|008|020|
  9. +---+---+---+
  10. |410|060|003|
  11. |000|500|010|
  12. |200|031|400|
  13. +---+---+---+
  14. else ok
  15. while ok
  16. if ok
  17. prelsite
  18. suivante c ok
  19. +---+---+---+
  20. |504|690|001|
  21. |090|003|000|
  22. |600|010|089|
  23. +---+---+---+
  24. |070|100|004|
  25. |042|000|190|
  26. |900|008|020|
  27. +---+---+---+
  28. |410|060|003|
  29. |000|500|010|
  30. |200|031|400|
  31. +---+---+---+
  32. else ok
  33. while ok
  34. if ok
  35. prelsite
  36. suivante c ok
  37. +---+---+---+
  38. |704|690|001|
  39. |090|003|000|
  40. |600|010|089|
  41. +---+---+---+
  42. |070|100|004|
  43. |042|000|190|
  44. |900|008|020|
  45. +---+---+---+
  46. |410|060|003|
  47. |000|500|010|
  48. |200|031|400|
  49. +---+---+---+
  50. else ok
  51. while ok
  52. if ok
  53. prelsite
  54. suivante c ok
  55. +---+---+---+
  56. |804|690|001|
  57. |090|003|000|
  58. |600|010|089|
  59. +---+---+---+
  60. |070|100|004|
  61. |042|000|190|
  62. |900|008|020|
  63. +---+---+---+
  64. |410|060|003|
  65. |000|500|010|
  66. |200|031|400|
  67. +---+---+---+
  68. else ok
  69. while ok
  70. if ok
  71. prelsite
  72. suivante c ok


 
Donc la fonction se rappelle mais sur la même case et s'arrete quand elle a essayer les 4 possibilité pour la première case. Je tient a préciser que les fonctions admissible et la fonction trouvant les valeurs possible et les stockant fonctionne bien .
Quelqu'un a une idée ? je deviens fou perso  :pt1cable:


Message édité par clawfire le 12-06-2007 à 17:00:45
mood
Publicité
Posté le 12-06-2007 à 16:49:11  profilanswer
 

n°1573913
Elmoricq
Modérateur
Posté le 12-06-2007 à 16:56:19  profilanswer
 

Tiens ? J'ai déjà vu ce code quelque part.  [:noxauror]

n°1573921
clawfire
Posté le 12-06-2007 à 17:00:12  profilanswer
 

c'est en effet possible :$ As tu donc une idée ?


Message édité par clawfire le 12-06-2007 à 17:00:29
n°1573927
_darkalt3_
Proctopathe
Posté le 12-06-2007 à 17:04:02  profilanswer
 

Elmoricq a écrit :

Tiens ? J'ai déjà vu ce code quelque part.  [:noxauror]


Ils doivent être de la même école [:god]


---------------
Töp of the plöp
n°1573930
clawfire
Posté le 12-06-2007 à 17:06:21  profilanswer
 

Je viens de voir ... en effet et on est pas les 2 seuls a avoir des problèmes

n°1573948
Elmoricq
Modérateur
Posté le 12-06-2007 à 17:18:10  profilanswer
 

Par contre vous avez le même code. Quelle coïncidence ! [:dawak]

n°1573958
clawfire
Posté le 12-06-2007 à 17:27:24  profilanswer
 

et bien la fonction la je l'ai écrite avec mes ptits doigts sur mon ptit pc portable donc bon ... apres qu'on ai le même code ca se tient si on a la meme fonction a faire nan ?

n°1574172
nORKy
Grmmph...
Posté le 13-06-2007 à 09:17:03  profilanswer
 

Et bien, je ne vois pas ou ta fonction fait sa récursivité
"||ajout||\n" devrait s'afficher pour qu'il y est récursivité, hors je ne le vois pas ; donc ind vaut NULL. A toi de trouver pourquoi.
On ne sait meme pas initialement ce que vallent les paramètres de ta fonction coloriser. On ne sais pas non plus ce que peut renvoyer admissible.
 
Nan, ca se tient pas dans le sens ou on a pas l'impression que toi même tu comprennes ce que 'tu' as codé. Cherche un peu.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  appel recursif qui ne marche pas

 

Sujets relatifs
Appel d'une procédure dont le nom est contenu dans une variableMon solveur de s.u.d.o.k.u marche mais trouve pas toutes les solutions
Appel d'un web service depuis J2ME : UnsatisfiedLinkError[VB.NET/Exchange] Problème : accès refusé à l'appel de la méthode send
[Resolu]Attente fin d'appel de script PHP avec AJAXgetElementById ne marche pas avec mon doc XML
appel fonction c[RESOLU]Array et fonction max qui ne marche pas ...
[PHP/MYSQL] pourquoi ce script marche pas ?[Access 2000 et SQL] Count, Group by et Sort => le sort ne marche pas
Plus de sujets relatifs à : appel recursif qui ne marche pas


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR