j'ai un tp a rendre aprés demain,c' est pour objet d'evaluer une expression arithemetique donnée en format préfixé
( ex : / + 10 2 3 ) puis il la reaffiche en format infixé c .a .d avec les parentthése( ex: (10+2)/3). j'ai fait un code mais il marche juste avec les chiffres de 1 a 9. merci d'avance
voila mon code
/*****************fonction***********************/
typedef struct element
{
char c;
struct element *suiv;
}Pilec;
typedef struct ah
{
double a;
struct ah *su;
}Pilei;
Pilec *empile(Pilec *pile,char elm)
{
Pilec *cur;
cur=(Pilec*)malloc(sizeof(Pilec));
cur->c=elm;
cur->suiv=pile;
pile=cur;
return pile;
}
Pilec *depile(Pilec *pile)
{
Pilec *cur;
cur=pile;
cur=pile->suiv;
delete(pile);
pile=cur;
return pile;
}
void affiche(Pilec *pile)
{
Pilec *cur;
cur=pile;
if(pile==NULL)
printf("pile est vide\n");
else
while(cur!=NULL)
{
printf("%c",cur->c);
cur=cur->suiv;
}
}
void aff(Pilei *pile)
{
Pilei *cur;
cur=pile;
while(cur!=NULL)
{
printf("%f",cur->a);
cur=cur->su;
}
}
char somc(Pilec *pile)
{
char z=pile->c;
return z;
}
Pilei *emp(Pilei *p,double elt)
{
Pilei *cur;
cur=(Pilei*)malloc(sizeof(Pilei));
cur->a=elt;
cur->su=p;
p=cur;
return p;
}
Pilei *dep(Pilei *p)
{
Pilei *cur;
cur=p;
cur=p->su;
delete(p);
p=cur;
return p;
}
double somi(Pilei *p)
{
double z=p->a;
return z;
}
//programme principale
#include<stdio.h>
#include<stdlib.h>
#include<iostream.h>
#include<conio.h>
#include"projet de la pile.h"
void main()
{
Pilec *infix=NULL;
Pilei *pile=NULL;
char a,b,*p;
double i,y,f,x,q,j;
printf("Entrez l'expression arithmetiqe en format infixe séparé par des espaces:\n");
while(a)
{
scanf("%c",&a);
if(a==':') break;
else
if( a != (' '))
infix=empile(infix,a);
}
while(infix!=NULL)
b=somc(infix);
{
if(b=='*')
{
y=somi(pile);
pile=dep(pile);
f=somi(pile);
pile=dep(pile);
x=y*f;
pile=emp(pile,x);
}
else if (b=='/')
{
y=somi(pile);
pile=dep(pile);
f=somi(pile);
x=y/f;
pile=dep(pile);
pile=emp(pile,x);
}
else if(b=='+')
{
y=somi(pile);
pile=dep(pile);
f=somi(pile);
x=y+f;
pile=dep(pile);
pile=emp(pile,x);
}
else if(b=='-')
{
y=somi(pile);
pile=dep(pile);
f=somi(pile);
x=y-f;
pile=dep(pile);
pile=emp(pile,x);
}
else if(b=='s')
{
q=somi(pile);
j=q;
pile=dep(pile);
pile=emp(pile,j);
}
else
{
p=&b;
i=atoi(p);
pile=emp(pile,i);
}
infix=depile(infix);
}
printf("La resultat du calcul est:\n");
aff(pile);
while(pile!=NULL)
{
pile=dep(pile);
}
printf("\n");
getch();
}