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 97 98 99
| #include <stdio.h>
#include <stdlib.h>
#include <conio.h>
typedef struct
{
int * t;
int taille;
int sommet;
}pile;
////////////////////////////////////////
int pleine(pile p)
{
if(p.sommet==p.taille) return 1;
else return 0;
}
////////////////////////////////////////
void empiler(pile *p, char x)
{
if(pleine(*p)==1)
printf("pile pleine !\n");
else{
(*p).t[(*p).sommet] = x;
(*p).sommet++;
}
}
////////////////////////////////////////
int vide(pile p)
{
return (p.sommet==0);
}
////////////////////////////////////////
int depiler(pile *p)
{
(*p).sommet--;
return (*p).t[(*p).sommet];
}
////////////////////////////////////////
void RAZ(pile *p)
{
(*p).sommet = 0;
}
////////////////////////////////////////
int main()
{
pile npi1;
pile npi2;
char *oper;
int n,i,res=0,v1,v2,u;
do{
printf("Entrez la taille de la chaine : \n");
scanf("%d",&n);
}while(n<0);
oper = (char*)malloc(n*sizeof(char));
i=0;
while(oper[i] != '\0') {i++;}
u=i;
npi1.taille = (int*)malloc(u*sizeof(char));
printf("donnez un operation a resoudre sans parentheses svp ! \n");
scanf("%s",oper);
printf("voilà l'operation classique que vous avez entrez :p \n");
puts(oper);
while(oper[i]!='\0')
{
npi1.sommet = NULL;
if(oper[i] != '*' && oper[i] != '+')
empiler(npi1,&oper[]);
else if(oper[i] == '+')
{
v1 = depiler(&npi1);
v2 = depiler(&npi1);
res = v1+v2;
empiler(&npi1,res);
}
else if(oper[i] == '*')
{
v1 = depiler(&npi1);
v2 = depiler(&npi1);
res = v1+v2;
empiler(&npi1,res);
}
res = depiler(&npi1);
printf(res);
getch();
return 0;
} |
Partager