Se connecter / S'enregistrer
Votre question

postfixee en C

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
24 Juillet 2007 13:10:51

salut a tous
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

a c 232 L Programmation
24 Juillet 2007 13:31:59

Nous ne te donnerons pas de code ici, mais nous pouvons t'aider à réfléchir, ce qui est beaucoup plus intéressant pour toi.
Copier/coller un code ne t'apportera rien.


Sais-tu ce qu'est une expression postfixée déjà ?
24 Juillet 2007 16:27:19

Citation :
je veux que quelqu'un me donne

T'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 ?
24 Juillet 2007 20:07:15

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
24 Juillet 2007 20:14:52

tomlev a dit :
Citation :
je veux que quelqu'un me donne

T'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
a c 232 L Programmation
24 Juillet 2007 20:29:57

As tu lu ma remarque ?
a c 232 L Programmation
24 Juillet 2007 20:36:16

J'ai fusionné tes deux messages. Merci de ne pas faire deux topics sur le même sujet.

24 Juillet 2007 21:03:01

salut,
il est un peu fait vite fait ton programme...
dans la fonction solution, tu prends le parametre taille mais tu ne l'utilises pas!
et dans
  1. while(tab[i]!=';')
i n'est pas initialisé avant
24 Juillet 2007 21:03:46

ffffffffuuuuuuuuuuuuuuuuuuussssssssssssssssioooooooooooooonnnnnnnnnnnn

yaaaaaaaaaaaaaaaaaaaaaaaahhhhhhhhhhhhhhh

son cerveau peut fusionner aussi ?
a b L Programmation
24 Juillet 2007 21:06:25

[grillé]
J'ai pas testé ton code.

Dans fonction "solution", "i" n'est pas initialisé (peut avoir n'importe quelle valeur).
comme c'est du post, il faut partir de la fin, c'est plus facile.
[/grillé]
:) 
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS