postfixee en C
Dernière réponse : dans Programmation
salut a tous
je veux que quelqu'un me donne le code en C d'un pg"evaluation d'une expression postfixee"
merci beaucoup
je veux que quelqu'un me donne le code en C d'un pg"evaluation d'une expression postfixee"
merci beaucoup
Autres pages sur : postfixee
Lassé par la pub ? Créez un compte
mes amis
j'avais fais un pg en C pour evaluer une expression postfixee
ex: 1 4+4 2-* nous donnera la valeur 10
maisje nest pas obtenu ce que je veux
s'il vous plais je veux un peu d'aide dans ce pg:
#include<stdio.h>
#include<stdlib.h>
typedef char elt;
typedef struct cellule
{
elt data;
struct cellule *lien;
}*pile;
void creer(pile *p)
{
*p=NULL;
}
int pilevide(pile p)
{
return(p==NULL);
}
void empiler(pile *p,elt e)
{
pile q;
q=(pile)malloc(sizeof(struct cellule));
q->data=e;
q->lien=*p;
*p=q;
}
int depiler(pile *p)
{
if(pilevide(*p))
return 0;
*p=(*p)->lien;
return 1;
}
int sommet(pile p,elt *e)
{
if(pilevide(p))
return 0;
*e=p->data;
return 1;
}
void remplir(char tab1[],int taille)
{
int i=0;
printf("tu peux commencer a me donner l'expression arithmetique: \n");
printf("tab[0]=");
scanf("%s",&tab1);
while((tab1!=';')&&(i<taille))
{
i++;
printf("tab[%d]=",i);
scanf("%s",&tab1);
}
}
//EVALUATION D'UNE EXPRESSION POSTFIXEE.
int operande(char c)
{
return(c>='0'&&c<='9');
}
int operateur(char c)
{
return(c=='+'||c=='-'||c=='*'||c=='/'||c=='#'||c=='^');
}
int puissance(int a,int pui)
{
int i;
if(pui==0)
return 0;
else
for(i=1;i<pui;i++)
a=a*a;
return a;
}
int solution(char tab[],int taille)
{
pile p;
int i;
char x,y;
creer(&p);
while(tab!=';')
{
if(operande(tab))
{
empiler(&p,(tab));
i++;
}
else
{
if(operateur(tab))
{
switch(tab)
{
case'#':
{
sommet(p,&x);
depiler(&p);
empiler(&p,x*(-1));
break;
}
case'^':
{
sommet(p,&x);
depiler(&p);
sommet(p,&y);
depiler(&p);
empiler(&p,puissance(y,x));
break;
}
case'*':
{
sommet(p,&x);
depiler(&p);
sommet(p,&y);
depiler(&p);
empiler(&p,y*x);
break;
}
case'+':
{
sommet(p,&x);
depiler(&p);
sommet(p,&y);
depiler(&p);
empiler(&p,y+x);
break;
}
case'-':
{
sommet(p,&x);
depiler(&p);
sommet(p,&y);
depiler(&p);
empiler(&p,y-x);
break;
}
case'/':
{
sommet(p,&x);
depiler(&p);
sommet(p,&y);
depiler(&p);
empiler(&p,y/x);
break;
}
}
i++;
}
}
}
sommet(p,&x);
return x;
}
void main()
{
char tab[100];
int i=0,sol,m;
scanf("%d",&m);
remplir(tab,m);
sol=solution(tab,m);
printf("la solution de cette equation est\t%d\n",sol);
}
merci beaucoup
j'avais fais un pg en C pour evaluer une expression postfixee
ex: 1 4+4 2-* nous donnera la valeur 10
maisje nest pas obtenu ce que je veux
s'il vous plais je veux un peu d'aide dans ce pg:
#include<stdio.h>
#include<stdlib.h>
typedef char elt;
typedef struct cellule
{
elt data;
struct cellule *lien;
}*pile;
void creer(pile *p)
{
*p=NULL;
}
int pilevide(pile p)
{
return(p==NULL);
}
void empiler(pile *p,elt e)
{
pile q;
q=(pile)malloc(sizeof(struct cellule));
q->data=e;
q->lien=*p;
*p=q;
}
int depiler(pile *p)
{
if(pilevide(*p))
return 0;
*p=(*p)->lien;
return 1;
}
int sommet(pile p,elt *e)
{
if(pilevide(p))
return 0;
*e=p->data;
return 1;
}
void remplir(char tab1[],int taille)
{
int i=0;
printf("tu peux commencer a me donner l'expression arithmetique: \n");
printf("tab[0]=");
scanf("%s",&tab1);
while((tab1!=';')&&(i<taille))
{
i++;
printf("tab[%d]=",i);
scanf("%s",&tab1);
}
}
//EVALUATION D'UNE EXPRESSION POSTFIXEE.
int operande(char c)
{
return(c>='0'&&c<='9');
}
int operateur(char c)
{
return(c=='+'||c=='-'||c=='*'||c=='/'||c=='#'||c=='^');
}
int puissance(int a,int pui)
{
int i;
if(pui==0)
return 0;
else
for(i=1;i<pui;i++)
a=a*a;
return a;
}
int solution(char tab[],int taille)
{
pile p;
int i;
char x,y;
creer(&p);
while(tab!=';')
{
if(operande(tab))
{
empiler(&p,(tab));
i++;
}
else
{
if(operateur(tab))
{
switch(tab)
{
case'#':
{
sommet(p,&x);
depiler(&p);
empiler(&p,x*(-1));
break;
}
case'^':
{
sommet(p,&x);
depiler(&p);
sommet(p,&y);
depiler(&p);
empiler(&p,puissance(y,x));
break;
}
case'*':
{
sommet(p,&x);
depiler(&p);
sommet(p,&y);
depiler(&p);
empiler(&p,y*x);
break;
}
case'+':
{
sommet(p,&x);
depiler(&p);
sommet(p,&y);
depiler(&p);
empiler(&p,y+x);
break;
}
case'-':
{
sommet(p,&x);
depiler(&p);
sommet(p,&y);
depiler(&p);
empiler(&p,y-x);
break;
}
case'/':
{
sommet(p,&x);
depiler(&p);
sommet(p,&y);
depiler(&p);
empiler(&p,y/x);
break;
}
}
i++;
}
}
}
sommet(p,&x);
return x;
}
void main()
{
char tab[100];
int i=0,sol,m;
scanf("%d",&m);
remplir(tab,m);
sol=solution(tab,m);
printf("la solution de cette equation est\t%d\n",sol);
}
merci beaucoup
tomlev a dit :
Citation :
je veux que quelqu'un me donneT'as une drôle de façon de demander de l'aide je trouve...
A part ça, il faudrait être plus précis sur ce que tu cherches. Laisse moi deviner, ton prof d'informatique t'as donnée ce truc à faire et t'as aucune idée de ce qu'il faut faire ?
cher tomlev
en effet j'ai une idee sur ce pg
mais je n;ai pas arrive au resultat que j'espere
vas y au sujet et vois ce pg .et je te remercie pour votre rq en esperant un peu d'aide de vous si ca vous plait
bye
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumProjet de programmation
- ForumConvert ascii to char c
- ForumPlantage explorer copier coller
- ForumComment programmer sur excel
- ForumErreur compilation programme en c
- ForumFaire petit programme excel
- ForumProgrammation c fscanf
- ForumOuverture et fermeture de programmes compliqu
- ForumProgramme de blocage de fenêtres intempestives installé
- ForumProgramme en c
- Voir plus