Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1547 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  besoin d'aide sur arbre binaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

besoin d'aide sur arbre binaire

n°264667
da_s_monk
Awwwww! Good Job!
Posté le 08-12-2002 à 12:45:50  profilanswer
 

salut a tous.
 
bon alors j'ai un probleme... je dois effectuer des calcul apres avoir mis une expression de cette forme "+-*89*67*23" (equivalent a: "((8*9)-(6*7))+(2*3)" ) dans un arbre binaire... bon ca je pense avoir reussi... mais mon probleme c que j'arrive pas a le lire alors que je pense que mon truc est bon...
voila le code, dite moi ce que vous en pensez et si vous voyez l'erreur, dite le moi svp

Code :
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <string.h>
  4. #include <malloc.h>
  5. #include <conio.h>
  6. #include <windows.h>
  7. #include <time.h>
  8. ////////////////////////////////////////////////////////////////////////////////
  9. typedef struct branches{   
  10. char contenue;
  11. struct branches *gauche;
  12. struct branches *droite;
  13. }branche;
  14. int fin = 0;
  15. ////////////////////////////////////////////////////////////////////////////////
  16. void entrer();
  17. void MettageEnArbre(char *);
  18. void MettageDeLaValeur(char cont,branche *);
  19. ////////////////////////////////////////////////////////////////////////////////
  20. void MettageDeLaValeur(char cont, branche *p){
  21. p->contenue=cont;
  22. printf("%c",cont);
  23. }
  24. /////////////////////////////////////////////////////////////////////////////////
  25. void MettageEnArbre(char *tab, branche *p){
  26. if(fin == strlen(tab)) return;       //condition de fin de creation
  27. if(tab[fin]=='*' || tab[fin]=='+' || tab[fin]=='-' || tab[fin]=='/' || tab[fin]=='%' || tab[fin]=='^'){
  28.  MettageDeLaValeur(tab[fin],p);
  29.  branche *feuilleg=(branche*)malloc(sizeof(branche)); //creation de la feuille de gauche
  30.  branche *feuilled=(branche*)malloc(sizeof(branche)); //creation de la feuille de droite
  31.  p->droite = feuilled;
  32.  p->gauche = feuilleg;        //le pointeur gauche de la fiche actuelle pointe sur la nouvelle fiche;
  33.  fin++;            //on passe a l'element suivant      
  34.  MettageEnArbre(tab,p->gauche);
  35.  MettageEnArbre(tab,p->droite);
  36. }
  37. else if(tab[fin]=='C'){
  38.  MettageDeLaValeur(tab[fin],p);
  39.  branche *feuilleg=(branche*)malloc(sizeof(branche));
  40.  p->gauche = feuilleg;
  41.  fin++;
  42.  MettageEnArbre(tab,p->gauche);
  43. }
  44. else if(tab[fin]>47 && tab[fin]<58){
  45.  MettageDeLaValeur(tab[fin], p);
  46.  fin++;
  47. }
  48. }
  49. ////////////////////////////////////////////////////////////////////////////////
  50. void Lecture(branche *p){
  51.    if(p->gauche) Lecture(p->gauche);
  52.    printf("%c\n",p->contenue);
  53.    if(p->droite) Lecture(p->droite);
  54. }
  55. ////////////////////////////////////////////////////////////////////////////////
  56. void entrer(){
  57. char tab[50];
  58. printf("Entrez Votre Expression: " );
  59. gets(tab);
  60. fflush(stdin);
  61. //printf("\n%s",tab);
  62. branche *ancre =(branche*)malloc(sizeof(branche));   //creation ancre
  63. branche *p=ancre;           //creation d'un pointeur vers l'ancre
  64. MettageEnArbre(tab,p);          //commence la creation de l'arbre
  65. Lecture(p);
  66. getch();
  67. }
  68. ////////////////////////////////////////////////////////////////////////////////
  69. void main(){
  70. int choix;
  71. do{
  72.  system("cls" );
  73.  printf("1- Faire Nouveau Calcul\n2- Quitter\n\nEntrez Votre Choix: " );
  74.  scanf("%d",&choix);
  75.  fflush(stdin);
  76.  switch(choix){
  77.   case 1: entrer();
  78.        break;
  79.   case 2: break;
  80.             default:  printf("\n\nEntrez 1 ou 2 pas %d!!!!!!",choix);
  81.       Sleep(1000);
  82.       break;
  83.  }
  84. }while(choix!=2);
  85. }


 
merci d'avance

mood
Publicité
Posté le 08-12-2002 à 12:45:50  profilanswer
 

n°264668
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 08-12-2002 à 12:50:25  profilanswer
 

et il est ou le problème? au fait on dit pas branche, mais noeud


---------------
du bon usage de rand [C] / [C++]
n°264670
da_s_monk
Awwwww! Good Job!
Posté le 08-12-2002 à 12:52:11  profilanswer
 

bah le probleme c que quand je lance le prog et que je rentre l'expression, et ben tout ce passe bien jusqu'a la lecture ou il me fait une erreur (les truc xp avec debug, send don't send...)

n°264671
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 08-12-2002 à 12:55:22  profilanswer
 

tu oublies de mettres tes pointeurs gauche et droit à NULL s'ils osnt inutilisés


---------------
du bon usage de rand [C] / [C++]
n°264672
da_s_monk
Awwwww! Good Job!
Posté le 08-12-2002 à 13:00:07  profilanswer
 

MERCI t un dieu!!!!!!!!
ca fait 3 heures que je me casse la tete sur le clavier!!!
trop cool.
 :love:  :love:  :love:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  besoin d'aide sur arbre binaire

 

Sujets relatifs
[PASCAL] cherche livre "aide memoire du turbo pascal"fichier d'aide c++ builder 6
[PHP] Faire appel à une fonction à l'aide d'un lien ???[PHP&Flash] Besoin d'infos
Aide au java plizcss, j'ai besoin d'un peu d'aide
Intelligence artificielle (aide pour projet)@ l'aide !!! personniser IE5
vinez voir mon projet + aide pour optimiser si possible =) 
Plus de sujets relatifs à : besoin d'aide sur arbre binaire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR