CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[JAVA HELP] Sudoku erreur incompréhensible ! 2

SettingUp
SettingUp
Niveau 6
08 avril 2018 à 19:43:06

Bonsoir, j'ai pour projet de programmer un résolveur de Sudoku en utilisant la notion de Pile en java.

Voici le code en question: https://pastebin.com/embed_js/X2KRHLNC
et la Pile: https://pastebin.com/embed_js/qchFW6cX

j'ai donc testé en entrant plusieurs grilles de sudoku. ça à fonctionné sur certaines mais pas sur d'autres.
De ce que je comprends (après plusieurs test où je printf les valeurs de x et de la pile correspondante à divers endroits) le problème survient lorsque le programme remonte jusqu'à la première case et la première valeur puis teste toutes les valeurs et aucune ne fonctionne, il essaie donc de dépiler à partir de la .. ce qui est impossible puisque la liste est vide arrivé à ce moment là..

Je bloque complètement la, merci de votre aide :-)

Message édité le 08 avril 2018 à 19:43:49 par SettingUp
Bunyan
Bunyan
Niveau 17
09 avril 2018 à 08:04:25

Je pense que tu as un souci au moins au niveau de la vérif' de ta valeur avec elle-même. Tu ne dis pas explicitement "je viens de remplir cette case, il ne faut pas la compter pour la vérification".
Si tu remplis la case se situant en {1, 5}, tu la compares avec toutes les valeurs de la ligne {1} et de la colonne {5}, y compris elle-même, donc tes méthodes verifCol, verifLigne et verifBloc doivent toujours être dans le cas "false". Ce qui te mènerait ensuite dans le cas que tu mentionnes ("pile de valeur vide").
Que tu arrives à résoudre des Sudoku actuellement tiens de la coïncidence de ce que j'ai l'impression de comprendre de ton code.

Remarque sur ton code :
- apprend la définition de "implémenter" ;)
- nomme correctement tes variables : x, i, j... les variables à une lettre sont exclusivement réservées aux usages mathématiques (dans le cas de notation connue) ou à des parcours de boucle court. Pour le reste, il vaut mieux écrire explicitement ce que c'est
- "erreur" n'a comme valeur que 0 ou 1 => pourquoi ne pas utiliser un booléen ?
- tu as de sérieux problème de recouvrement de visibilités (x, i et j sont des attributs de la classe ET des variables locales). C'est un très bon moyen pour se créer soi-même des bugs facilement évitable.

SettingUp
SettingUp
Niveau 6
09 avril 2018 à 11:58:09

Merci de ta réponse :-) ! (et de m'avoir indiqué l'existence des pastebin sur l'autre topic :ok:)

J'ai modifié le code en tenant compte de ce que tu m'as dit sur les noms des variables/ attributs de classes etc
: https://pastebin.com/embed_js/PqsDeicu (je n'ai pas modifié la Pile)

Cependant je ne suis pas sur de comprendre le problème que tu soulèves:
Si je remplis la case {1;5} et que j'effectue ma comparaison également avec elle même je ne vois pas où est le problème puisque j'affecte la valeur trouvée après comparaison. Il y a donc 2 cas possibles =>

-Soit la case en question est vierge (=0) et la comparer avec elle même ne pose donc pas de problème puisqu'à aucun moment la valeur testée ne pourra être égale à 0.

-Soit la case contient déjà un chiffre (erreur=true donc on revient sur la case d'avant: dépilement) et à ce moment j'initialise la valeur avec laquelle on va effectuer la comparaison à la valeur contenue dans cette case (obtenu grâce à la pile) +1. Il n'y a donc aucun moment où la valeur cherchée va être comparée à la valeur déjà présente dans la case.

(Il y à beaucoup de chance pour que je n'ai pas bien compris ce tu as voulu me dire :hap: .. dans ce cas excuse moi d'avoir écrit tout ça pour rien :-))

SettingUp
SettingUp
Niveau 6
09 avril 2018 à 17:47:46

J'ai réussi à résoudre mon problème je ne sais pas tout à fait de quelle manière... Merci en tout cas de ton aide qui m'a permis de mieux structurer/ présenter mon programme, ça m'a pas mal aidé pour trouver le problème :-) !Je passe le topic en résolu du coup :hap:

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment