begin process at 2008 09 06 19:14:05
1 237 887 membres
272 nouveaux aujourd'hui
14 314 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

JEU HANOI EN C [VC 6.0]


Information sur la source

Catégorie :Maths & Algorithmes Niveau : Débutant Date de création : 01/10/2002 Date de mise à jour : 01/10/2002 10:50:11 Vu : 2 302

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

Description

Source

  • #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);
  • }
  • }
#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
  • signaler à un administrateur
    Commentaire de GoldenEye le 04/10/2002 10:57:54

    Voilà ma proposition:

    #include &lt;stdio.h&gt;

    void hanoi(int n, int f, int v, int t){
      if (n &gt; 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;
    }

  • signaler à un administrateur
    Commentaire de fixerpl le 05/06/2006 02:22:54

    cool

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS