Votre question

Solution d un exercice

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
24 Avril 2011 22:01:54

j en ai besion d aide
ecrire un programme qui utilise une foction recursive et les piles qui permet de convertir un nombre decimalen une base entre 2 et 16 (le nombre decimale et la base seront donnes par l utilisateur pendant l'execution du programme)

Autres pages sur : solution exercice

24 Avril 2011 22:15:32

Le but d'un exercice est de t'exercer non? Propose nous un début de quelque chose et on essaiera de t'aider.
m
0
l
24 Avril 2011 22:28:08

ok j ai essaye mais j arrive po, i have a solution without (la pile) but i need it with it
  1. #include<stdio.h>
  2. # define max 10
  3. int pile[max];
  4. int static sommet;
  5. char empiler (char n)
  6. {
  7.  
  8. if (sommet >=max)
  9. printf("stack overflow");
  10. else
  11. sommet = sommet+1;
  12. pile[sommet]=n;
  13. }
  14. char depiler()
  15. {
  16. if (sommet <=0)
  17. printf("stack underflow");
  18. else
  19. return pile[sommet];
  20. sommet = sommet -1;
  21. }
  22. int r;
  23. char c[]={"0123456789ABCDEF"};
  24. void conversion(int n, int b)
  25. {
  26. int q;
  27. q=n/b;
  28. r=n%b;
  29. if(q!=0)
  30.  
  31. empiler(c[r]);
  32. printf("%c",c[r]);
  33. fflush(stdin);
  34. }
  35.  
  36. main()
  37. {
  38. int n,b;
  39. printf("donner un nombre decimal:");
  40. scanf("%d",&n);
  41. printf("donner la base voulue:");
  42. scanf("%d",&b);
  43. for(r=0;r<=sommet;r++)
  44. {
  45. conversion(n,b);
  46. depiler();
  47. printf("\n");
  48. }
  49. getch();
  50. }
m
0
l
Contenus similaires
24 Avril 2011 22:32:47

A quoi doit servir la pile ici? Parce que la pile est utilisée de base lorsque tu fais ta
récursivité (pour empiler les contextes).

Edit : Pense à utiliser les balises <code> pour la rédaction de tes messages!
m
0
l
24 Avril 2011 22:33:55

Here 's a solution without les piles just with a recursive function
  1. #include<stdio.h>
  2. void conversion(int n, int b)
  3. {
  4. int r;
  5. char c[]={"0123456789ABCDEF"};
  6. int q;
  7. q=n/b;
  8. r=n%b;
  9. if(q!=0)
  10. conversion(q,b);
  11. printf("%c",c[r]);
  12. }
  13. main()
  14. {
  15. int n,b;
  16. printf("donner un nombre decimal:");
  17. scanf("%d",&n);
  18. printf("donner la base voulue:");
  19. scanf("%d",&b);
  20. conversion(n,b);
  21. printf("\n");
  22. getch();
  23. }
m
0
l
24 Avril 2011 22:35:19

yeah i know mais il faut l ajouter au premier programmeil faut faire un empilement et un depilement
m
0
l
24 Avril 2011 22:38:59

vous avez qq ch a propos de ca?
m
0
l
24 Avril 2011 22:39:28

Les fonctions empiler() et depiler() marchent?
m
0
l
24 Avril 2011 22:40:45

bah je pense qu elles marchent mais je sais pas comment?
m
0
l
24 Avril 2011 22:45:28

il faut utiliser une fonction recursive + une fct d empilement + une fct de depilement
m
0
l
a b L Programmation
25 Avril 2011 11:59:19

Au lieu de faire un printf, tu mets le résultat dans la pile.
m
0
l
26 Avril 2011 22:52:01

merci pour votre aide
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS