M
Membre supprimé 1
Invité
[cpp]#include <stdio.h>
#include <stdlib.h>
#define N 20
typedef struct { int sommet;
int tab[N];
} pile;
void empiler(int c, pile *p)
{ (*p).tab[(*p).sommet] = c;
(*p).sommet ++;
}
int depiler(pile *p)
{ (*p).sommet --;
return (*p).tab[(*p).sommet + 1];
}
int hanoi(pile *un, pile *deux, pile *trois, int n)
{ int c;
if (n == 0 ) return 0;
else
{ hanoi(un, trois, deux, n-1);
if ( (*un).sommet > 0){
c = depiler(un);
empiler(c, trois);
}
hanoi(deux, un, trois, n-1);
}
}
int main()
{ int n, i, d;
pile *un, *deux, *trois;
printf("Nombre d anneaux ? : ");
scanf("%d", &n);
un = (pile *)malloc(sizeof(int) * (n+1));
deux = (pile *)malloc(sizeof(int) * (n+1));
trois = (pile *)malloc(sizeof(int) * (n+1));
d = n;
printf("\npiquet UN :\n");
for(i=0 ; i<n ; i++)
{ (*un).tab = d ;
(*deux).tab = 0;
(*trois).tab = 0;
d--;
printf("%d\t", (*un).tab);
}
(*un).sommet = n-1;
(*deux).sommet = 0;
(*trois).sommet = 0;
hanoi(un, deux, trois, n);
printf("\nApres le jeu :\n\npiquet UN :\n");
for(i=1 ; i<= (*un).sommet ; i++)
{ printf("%d\t", (*un).tab);
}
printf("\npiquet DEUX :\n");
for(i=1 ; i<= (*deux).sommet ; i++)
{ printf("%d\t", (*deux).tab);
}
printf("\npiquet TROIS :\n");
for(i=1 ; i<= (*trois).sommet ; i++)
{ printf("%d\t", (*trois).tab);
}
return 0;
}
[/cpp]
Salut j'essaye de faire en C l'algo des tours d'Hanoi je sais pas si vous connaissez, j'suis arrivé à ça (au dessus) mais ca ne marche pas vraiment
Vous pouvez m'aider un ptit peu ?
Merkiiii
#include <stdlib.h>
#define N 20
typedef struct { int sommet;
int tab[N];
} pile;
void empiler(int c, pile *p)
{ (*p).tab[(*p).sommet] = c;
(*p).sommet ++;
}
int depiler(pile *p)
{ (*p).sommet --;
return (*p).tab[(*p).sommet + 1];
}
int hanoi(pile *un, pile *deux, pile *trois, int n)
{ int c;
if (n == 0 ) return 0;
else
{ hanoi(un, trois, deux, n-1);
if ( (*un).sommet > 0){
c = depiler(un);
empiler(c, trois);
}
hanoi(deux, un, trois, n-1);
}
}
int main()
{ int n, i, d;
pile *un, *deux, *trois;
printf("Nombre d anneaux ? : ");
scanf("%d", &n);
un = (pile *)malloc(sizeof(int) * (n+1));
deux = (pile *)malloc(sizeof(int) * (n+1));
trois = (pile *)malloc(sizeof(int) * (n+1));
d = n;
printf("\npiquet UN :\n");
for(i=0 ; i<n ; i++)
{ (*un).tab = d ;
(*deux).tab = 0;
(*trois).tab = 0;
d--;
printf("%d\t", (*un).tab);
}
(*un).sommet = n-1;
(*deux).sommet = 0;
(*trois).sommet = 0;
hanoi(un, deux, trois, n);
printf("\nApres le jeu :\n\npiquet UN :\n");
for(i=1 ; i<= (*un).sommet ; i++)
{ printf("%d\t", (*un).tab);
}
printf("\npiquet DEUX :\n");
for(i=1 ; i<= (*deux).sommet ; i++)
{ printf("%d\t", (*deux).tab);
}
printf("\npiquet TROIS :\n");
for(i=1 ; i<= (*trois).sommet ; i++)
{ printf("%d\t", (*trois).tab);
}
return 0;
}
[/cpp]
Salut j'essaye de faire en C l'algo des tours d'Hanoi je sais pas si vous connaissez, j'suis arrivé à ça (au dessus) mais ca ne marche pas vraiment
Vous pouvez m'aider un ptit peu ?
Merkiiii