Algorithme les tours d'hanoi

Soyez le premier à donner votre avis sur cette source.

Snippet vu 21 015 fois - Téléchargée 35 fois

Contenu du snippet

petit algo compilé avec Turbo C

Source / Exemple :


/*******************************************************
		  les tours de hanoi
		(c) 2002 md-soft

                                                                                                                • /
#include <stdio.h> #include <conio.h> int tours[3][8]={ {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0} }; int compteur = 0; /****************************************************** Deplacement des disques
                                                                                                              • /
void move(int depart,int arrivee){ int i,j; compteur++; for(i=0;tours[depart][i]!=0;i++); i--; for(j=0;tours[arrivee][j]!=0;j++); tours[arrivee][j]=tours[depart][i]; tours[depart][i]=0; aff_tours(tours); } /****************************************************** choix de l'intermediaire
                                                                                                              • /
int autre(int tdeb,int tarr){ return (3-tdeb-tarr); } /****************************************************** fonction hanoi
                                                                                                            • /
void hanoi(int disk,int tdeb,int tarr){ if(disk==1){ move(tdeb,tarr); } else{ int tinter=autre(tdeb,tarr); hanoi(disk-1,tdeb,tinter); move(tdeb,tarr); hanoi(disk-1,tinter,tarr); } } /****************************************************** affichage des disques
                                                                                                            • /
aff_disk(int t_disk){ int larg,nb_blanc,i; if(t_disk==0){ printf("%21s"," "); } else{ larg=(t_disk*2)-1; nb_blanc=(21-larg)/2; for(i=0;i<nb_blanc;i++){ printf(" "); } for(i=0;i<larg;i++){ printf("Û"); } for(i=0;i<nb_blanc;i++){ printf(" "); } } } /****************************************************** affichage des tours
                                                                                                            • /
aff_tours(int table[3][8]){ int n;int i; clrscr(); printf("Coup nø%d\n", compteur); for(i=7;i>=0;i--) { for(n=0;n<3;n++) { aff_disk(table[n][i]); } printf("\n"); } sleep(1); } /****************************************************** mise en place des disques
                                                                                                            • /
int disque(int n){ int i; for(i=0;i<n;i++){ tours[0][i]=n-i; } } /****************************************************** programme principal
                                                                                                            • /
main(){ int n; clrscr(); printf(" ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n"); printf(" º Les tours de hanoi º\n"); printf(" ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n\n"); do{ printf("Choisissez un nombre de disque entre 3 et 8: "); scanf("%d",&n); }while((n<3) || (n>8)); disque(n); aff_tours(tours); printf("\n"); hanoi(n,0,2); }

A voir également

Ajouter un commentaire

Commentaires

Messages postés
5
Date d'inscription
jeudi 11 octobre 2012
Statut
Membre
Dernière intervention
2 novembre 2012

j'aime bien avoir le codes sources des tours de hanoi si possible en interphase graphique avec c et merci d avance
Messages postés
1
Date d'inscription
dimanche 18 juillet 2004
Statut
Membre
Dernière intervention
27 août 2004

j'aime bien avoir le codes sources des tours hanoi si possible en interphace graphique sous le BUILDER C++.
et merci d'avance.
Messages postés
13
Date d'inscription
jeudi 8 août 2002
Statut
Membre
Dernière intervention
13 mai 2004

Je ne me suis par servi de Dev-C++ mais de turbo c.
ca sert a quoi?
ben c juste un petit algo
surtout la fonction Hanoi (récursivité)
sinon a rien d'autre
mais je début alors molo...
Messages postés
13
Date d'inscription
jeudi 8 août 2002
Statut
Membre
Dernière intervention
13 mai 2004

Je ne me suis par servi de Dev-C++ mais de turbo c.
ca sert a quoi?
ben c juste un petit algo
surtout la fonction Hanoi (récursivité)
sinon a rien d'autre
mais je début alors molo...
Messages postés
35
Date d'inscription
samedi 25 mai 2002
Statut
Membre
Dernière intervention
10 mai 2003

bein y'a quelques petites erreurs : t'as oublié les void avant certaines fonctions. aff_tour est déclaré après move alors que celui-ci l'utilise. Tu utilises sleep qui est dans windows.h et qui s'appelle Sleep. Et puis Dev-C++ connait pas clsrc...

et sinon, ça sert à quoi ton truc ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.