Algorithme les tours d'hanoi

Soyez le premier à donner votre avis sur cette source.

Snippet vu 21 557 fois - Téléchargée 37 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
mabroukagi Messages postés 5 Date d'inscription jeudi 11 octobre 2012 Statut Membre Dernière intervention 2 novembre 2012
15 avril 2012 à 18:44
j'aime bien avoir le codes sources des tours de hanoi si possible en interphase graphique avec c et merci d avance
bbayli Messages postés 1 Date d'inscription dimanche 18 juillet 2004 Statut Membre Dernière intervention 27 août 2004
27 août 2004 à 17:12
j'aime bien avoir le codes sources des tours hanoi si possible en interphace graphique sous le BUILDER C++.
et merci d'avance.
cs_anakhin Messages postés 13 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 13 mai 2004
12 août 2002 à 09:55
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...
cs_anakhin Messages postés 13 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 13 mai 2004
12 août 2002 à 09:54
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...
NettoyeurFantome Messages postés 35 Date d'inscription samedi 25 mai 2002 Statut Membre Dernière intervention 10 mai 2003
11 août 2002 à 16:49
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.