da_s_monk Awwwww! Good Job! | 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 :
- #include <stdio.h>
- #include <math.h>
- #include <string.h>
- #include <malloc.h>
- #include <conio.h>
- #include <windows.h>
- #include <time.h>
- ////////////////////////////////////////////////////////////////////////////////
- typedef struct branches{
- char contenue;
- struct branches *gauche;
- struct branches *droite;
- }branche;
- int fin = 0;
- ////////////////////////////////////////////////////////////////////////////////
- void entrer();
- void MettageEnArbre(char *);
- void MettageDeLaValeur(char cont,branche *);
- ////////////////////////////////////////////////////////////////////////////////
- void MettageDeLaValeur(char cont, branche *p){
- p->contenue=cont;
- printf("%c",cont);
- }
- /////////////////////////////////////////////////////////////////////////////////
- void MettageEnArbre(char *tab, branche *p){
- if(fin == strlen(tab)) return; //condition de fin de creation
- if(tab[fin]=='*' || tab[fin]=='+' || tab[fin]=='-' || tab[fin]=='/' || tab[fin]=='%' || tab[fin]=='^'){
- MettageDeLaValeur(tab[fin],p);
- branche *feuilleg=(branche*)malloc(sizeof(branche)); //creation de la feuille de gauche
- branche *feuilled=(branche*)malloc(sizeof(branche)); //creation de la feuille de droite
- p->droite = feuilled;
- p->gauche = feuilleg; //le pointeur gauche de la fiche actuelle pointe sur la nouvelle fiche;
- fin++; //on passe a l'element suivant
- MettageEnArbre(tab,p->gauche);
- MettageEnArbre(tab,p->droite);
- }
- else if(tab[fin]=='C'){
- MettageDeLaValeur(tab[fin],p);
- branche *feuilleg=(branche*)malloc(sizeof(branche));
- p->gauche = feuilleg;
- fin++;
- MettageEnArbre(tab,p->gauche);
- }
- else if(tab[fin]>47 && tab[fin]<58){
- MettageDeLaValeur(tab[fin], p);
- fin++;
- }
- }
- ////////////////////////////////////////////////////////////////////////////////
- void Lecture(branche *p){
- if(p->gauche) Lecture(p->gauche);
- printf("%c\n",p->contenue);
- if(p->droite) Lecture(p->droite);
- }
- ////////////////////////////////////////////////////////////////////////////////
- void entrer(){
- char tab[50];
- printf("Entrez Votre Expression: " );
- gets(tab);
- fflush(stdin);
- //printf("\n%s",tab);
- branche *ancre =(branche*)malloc(sizeof(branche)); //creation ancre
- branche *p=ancre; //creation d'un pointeur vers l'ancre
- MettageEnArbre(tab,p); //commence la creation de l'arbre
- Lecture(p);
- getch();
- }
- ////////////////////////////////////////////////////////////////////////////////
- void main(){
- int choix;
- do{
- system("cls" );
- printf("1- Faire Nouveau Calcul\n2- Quitter\n\nEntrez Votre Choix: " );
- scanf("%d",&choix);
- fflush(stdin);
- switch(choix){
- case 1: entrer();
- break;
- case 2: break;
- default: printf("\n\nEntrez 1 ou 2 pas %d!!!!!!",choix);
- Sleep(1000);
- break;
- }
- }while(choix!=2);
- }
|
merci d'avance |