1

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...
bonjour a tous

2

y'a 150 sites sur le net qui donnent la solution tte prete à être recopiée, faut chercher un peu...
http://www.ilemaths.net/encyclopedie/Tours_de_Hanoi.html
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

3

merci pour le lien, mais je demandais de l aide ici pour qu on me donne des pistes je ne veux pas recopier bêtement la réponse!
mais merci encore
biz
bonjour a tous

4

la façon dont t'as tourné ton post laissait croire que tu voulais quelque chose de tt cuit, ça donne pas trop envie d'expliquer ^^
(cela dit y'a *aussi* les explications sur le site grin)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5

Je te conseille tout particulièrement la page 35-4 du manuel d'utilisation de la TI92

[EDIT] et vu que c'est mon jour de bonté :

Algorithme utilisé
Pour déplacer n disques d'un piquet a vers un piquet b, on pricède de la façon suivante:

S'il n'y a qu'un disque à déplacer, il suffit de noter le numéro du piquet de départ et le numéro du piquet d'arivée.

Sinon,

1. On déplace les n-1 premiers disques du piquet a vers le piquet intermédiaire c.

2. On déplace le dernier disque (le plus gros) de a vers b

3. On termine en déplaçant lesn-1 disques de c vers b

Il suffit ensuite de remarquer que si a et b représentent les numéros de deux piquets alors le troisième porte toujours le numéro c = 6 - a - b. (Par exemple, si a = 1 et b = 3, c = 6 - 1 - 3 = 2.)

Texte du programme
:deplace(n,a,b)
:Prgm
:If n=1 then
:   Pause string(a)&" > "&string(b)
:Else
:   deplace(n-1,a,6-a-b)
:   deplace(1,a,b)
:   deplace(n-1,6-a-b,b)
:EndIf
:EndPrgm


Voici par exemple la liste des déplacements à effectuer pour déplacer trois anneaux du piquet 1 vers le piquet 3 :

ClrIO:deplace(3,1,3) [ENTER]

1 > 3
1 > 2
3 > 2
1 > 3
2 > 1
2 > 3
1 > 3


le texte du prog est en TI-BASIC bien entendu
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

6

L'exemple est suffisament courrant dans la mesure où c'est le cas d'école classique pour introduire la récurrence et la réintrance...
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca