IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Problème avec les piles


Sujet :

C

  1. #1
    Membre régulier
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Points : 88
    Points
    88
    Par défaut Problème avec les piles
    bonjour ,
    je viend de casser ma téte par un problème dans un programme par lequel je
    veux tranformé une expression arithmetique en une expression polonaise
    exemple (a+b) devient ab+ ,en utilisant les piles .

    j'ai creé une fonction pour enpiler les piles et une autre pour les affichées

    dans l'empilement je sépare les operandes et les operateurs,
    les operandes sont met dans la pile E et les operateurs sont met dans la pile
    oper

    et le problème dans l'affichage ,pour afficher oper il entre dans une boucle infini ,et je sais pas ou se trouve l'erreur et voilà le code d'une partie de programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<conio.c>
    #include<ctype.h>                                                                                 
     
     
    typedef struct elem_expres {        
    	                         char elem; 
    		            struct elem_expres *precedent;  
    		            } element; //les elements de la pile
    typedef element *pil;
     
     
     char  caractere; //globale
     
    pil enpiler(pil exp, char caract)
     
      {
        pil nouvcar = (element*)malloc(sizeof (element));
     
     
         if (nouvcar!= NULL)
            { 
                if(exp== NULL)
                   {
                     nouvcar->elem=caract;
     
                      return nouvcar;
     
                   }
                 else
                   {
     
                    nouvcar->elem=caract;
     
                    nouvcar->precedent = exp;
                    exp = nouvcar;
     
                    return exp;
                   }
            }       
       }
     
     void affichage(pil exp)
    		{
     
           element *temp =exp;
     
    			while(temp!=NULL)
    			 {
     
     
                        printf("\n%c",temp->elem);
     
                        temp=temp->precedent;
     
     
                 }
     
     
    	   	}
     
    main()        //   Programme principale   
         { 
     
       int i,l;
       pil oper=NULL;
       pil E=NULL;
       char express[20];   
     
             printf(" \n entrez votre expression arithmetique :");
             scanf("%s",&express);
     
         l=strlen(express);    
     
          for(i=0;i<l;i++)
     
           {             
                 if((isalnum(express[i])!=0) || (express[i]=='('))
     
                    E = enpiler(E,express[i]);
     
                  else if((express[i]=='+') || (express[i]=='-') || (express[i]=='*') || (express[i]=='/'))
     
                     oper= enpiler(oper,express[i]);
     
            } 
     
     
              affichage(E);getch();printf("\n");
              affichage(oper);getch();printf("\n");  
     
             getch();  
         }
    merci d'avance.

  2. #2
    Membre éclairé
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Points : 750
    Points
    750
    Par défaut
    L'indentation est pourrie, et après, en regardant rapidement tu as ta réponse:
    - boucle infinie
    - donc, temp->precedent n'est jamais NULL
    - question: le premier element a-t-il .precedent à NULL ?
    - CQFD.

Discussions similaires

  1. probléme avec les piles
    Par dev_2007 dans le forum Débuter
    Réponses: 12
    Dernier message: 16/11/2008, 23h13
  2. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04
  3. Problème avec les apostrophes
    Par misterbillyboy dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/07/2003, 16h39
  4. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 15h44
  5. []Problème avec les formulaires Outlook
    Par davidinfo dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo