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.