besoin de votre aide programme tour Hanoï svp
Hors ligneCalodie Le 04/05/2006 à 19:30 Profil de Calodie Configuration de Calodie

j ai ce programme a réaliser et je bloque complètement donc j aurais besoin de votre aide : je vous expose le sujet.

les tours de Hanoï sont un jeu solitaire consistant a déplacer n disques de diamètres différents d une tour de départ a une tour d arrivée en passant par une tour intermédiaire, tout en respectant la règle suivante : on ne peut pas placer sur un disque un autre disque plus grand que lui. Au départ tous les disques sont sur la tour de départ empilés du plus grand au plus petit.

Ecrire un programme qui demande a l utilisateur le nombre de disques et affiche les déplacements nécessaires pour résoudre le problème. Afficher les déplacements sous la forme :

Déplacer un disque de tour 1 à tour 3...
Déplacer un disque de tour 1 à tour 2...

indications : écrire une fonction
void hanoi( int n, int depart, int arrivee, int intermed)

qui déplace n disques de tour depart vers tour arrivee en utilisant la tour intermed, d abord on déplace les premiers n-1 disques de depart vers intermed (en utilisant arrivee comme tour intermediaire), ensuite on deplace le dernier disque de depart vers arrivee et a la foin on déplace les n-1 disques de intermed vers arrivee.

je vous remercie d avance de votre aide...
Hors ligneDolfinger Le 05/05/2006 à 01:27 Profil de Dolfinger Configuration de Dolfinger

Salut :)
A vu de nez il s'agit d'un system de gestion de files de type FILO (first in last out); le dernier arrivé est le premier reparti !

Une classe Pile.java;
Attributs:

  • private static final int HMAX; // nombre max d'anneaux dans une pile
  • private int[] disques; // tableau d'entiers représentant les hauteurs de disque


Méthodes :

  • public Pile() // constructeur
  • public boolean enleve() // enleve le dernier disque de la file si elle est non vide, rend faux sinon
  • public boolean ajoute(int disque) // essaye d'ajotuer le disque, (compare à la derniere hauteur et vérifie si la file n'est pas pleine) ; rend faux sinon
  • public toString() // ...


Et une autre Hanoi.java;
Attributs:

  • private static final int NBPILE; // nombre de pile, 3 d'apres ce que j'ai pigé du jeux
  • [puce]private Pile[] piles; // tableaux de piles


Méthodes:

  • public Hanoi() // constructeur
  • public boolean deplace(Pile p1, Pile p2) // essaye de déplacer un disque de p1 vers p2, rend faux si impossible
  • ...
  • public static void main(../) // Tu unitialises tes piles comme la règle du jeux le précise et ensuite tu appelles les fonctions adéquates pour effectuer la recherche de la solution. Pour differencer ceux de la pile de départ de ceux de la pile d'arriver tu peut utiliser la parité sur les diamètres...



C'est une approche faite en 5min; peut être que la solution est attendu differement (ton sujet n'est pas tres explicite...) notamment au niveau des diametres de disque. Il serait plus simple pour distinguer un disque comme un objet {couleur,diametre}
Je pense que ce problme est solvable via le arbres aussi... je te laisse méditer
Vais dodo il est tard, +++ et bonne chance

Edit : j'ai trouvé ca sur le net : site hanoi, il y a les 4 classes java sur la page.
Apparement j'etais sur la voie mais le problème n'etait pas assez recentré... a bientot

Hors ligneTigene Le 05/05/2006 à 12:26 Profil de Tigene Configuration de Tigene

Viconaute Modérateur
Salut les "Tour" istes

La tour de Hanoï !

Exercice bateau des enseignements de programmation et langages informatiques, car mettant en oeuvres des fonctions récursives.

en principe ça s'écrit, je crois, sur une seule ligne ou presque.

Bon forcément j'ai tout oublié, mais sur google tu trouveras certainement.

tu peux essayer de résoudre l'exercice avec 3 disques, et tu verras qu'avec 4 disques l'algorhytme reste le même et à fortiori avec n disques.

PS j'avais du faire ça avec LOGO, avec ADA et avec CAMEL.

@+


Pour y Jouer

Une Démo du Jeu

Résolution dans plusieurs Langages
--

Ce n'est pas parce qu'on a quelque chose à dire, qu'il faut forcément l'ouvrir

Hors ligneInvité Le 25/11/2006 à 12:39 Profil de Invité Configuration de Invité

Salut

je fais ça cette semaine, et le posterais coté sources partie C / algorithmes....

Je m'amuses à faire ce genre d'algos (en général un poil plus complexes) pour m'entrainer à prologin
--
Compte invité - devenez membre pour disposer de votre compte personnalisé !
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels