Jeu hanoi en c [vc 6.0]

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 685 fois - Téléchargée 35 fois

Contenu du snippet


Source / Exemple :


#include<stdio.h>
#include<string.h>
#include<memory.h>

int nb,tab1[10],tab2[10],tab3[10];

void affichage()  //int nb,int *tab1,int *tab2,int *tab3)
{
	int i,w,l;
w=nb;
    printf("\n");
	for (l=9;l>=0;l--)
	{
		for (i=0;i<10-tab1[l];i++)
		{
			printf(" ");
		}
		for (i=0;i<tab1[l];i++)
		{
			printf("%c",177);
		}
		printf("%c",179);
		for (i=0;i<tab1[l];i++)
		{
			printf("%c",177);
		}
		for (i=0;i<10-tab1[l];i++)
		{
			printf(" ");
		}

		for (i=0;i<10-tab2[l];i++)
		{
			printf(" ");
		}
		for (i=0;i<tab2[l];i++)
		{
			printf("%c",177);
		}
		printf("%c",179);
		for (i=0;i<tab2[l];i++)
		{
			printf("%c",177);
		}
		for (i=0;i<10-tab2[l];i++)
		{
			printf(" ");
		}

		for (i=0;i<10-tab3[l];i++)
		{
			printf(" ");
		}
		for (i=0;i<tab3[l];i++)
		{
			printf("%c",177);
		}
		printf("%c",179);
		for (i=0;i<tab3[l];i++)
		{
			printf("%c",177);
		}
		for (i=0;i<10-tab3[l];i++)
		{
			printf(" ");
		}
	//_getch();
	
		printf("\n");
	}		
}

void deplacement(int *tab1,int *tab2,int *tab3,int n)
{
	int i,y;
	if (n>0)
	{
		deplacement(tab1,tab3,tab2,n-1);
		for(i=9;i>0 && tab1[i]==0;i--);
		if (tab1[i]!=0)
		{
			y=tab1[i];
			tab1[i]=0;
		//printf("y= %d",y);
			for(i=0;i<10 && tab2[i]!=0;i++);		
			tab2[i]=y;			
		}
		affichage(); //n,tab3,tab2,tab1);
		getchar();
		deplacement(tab3,tab2,tab1,n-1);
	}
}

void main()
{
	int w,nb,i;
	memset(tab1,0,10*sizeof(int));
	memset(tab2,0,10*sizeof(int));
	memset(tab3,0,10*sizeof(int));

	printf("Saisir nb d anneaux (max 10) : ");
	scanf("%d",&nb);
	w=nb;
	for(i=0;i<10;i++)
	{
		tab1[i]=w;
		if (w>0)
		{ 
			w=w-1;
		}
	}

	
	if(nb<=10)
	{
		//affichage(nb,tab1,tab2,tab3);
		deplacement(tab1,tab2,tab3,nb);
	}
	
}

Conclusion :


Faut appuyer sur 'entrer' pour avancer d'une étape à l'autre

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
mardi 28 février 2006
Statut
Membre
Dernière intervention
5 juin 2006

cool
Messages postés
527
Date d'inscription
vendredi 14 septembre 2001
Statut
Membre
Dernière intervention
6 octobre 2008
3
Voilà ma proposition:

#include <stdio.h>

void hanoi(int n, int f, int v, int t){
if (n > 0) {
hanoi(n-1, f, t, v);
printf("De %d vers %d
", f, t);
hanoi(n-1, v, f, t);
}
}

int main(int argc,int *argv){
hanoi(argv[1], 1, 2, 3);
return 0;
}

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.