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();
} |
Partager