traduire en expression post-fixée (en turbo pascal)
Hors ligneNina Le 16/05/2008 à 11:43 Profil de Nina Configuration de Nina

bonjour a tous !!!!!
voila je suis nouvelle et j'ai vraiment besoin d'aide avant ce soir c'est tres tres tres tres urgent!
je voudrai que quelqu'un me traduit ce programme du c en pascal (je suis encore' debutante donc je connais pas trop le langage c)
ce programme traduit une expression arithmétique en 1 expression post-fixée

#define operande 1
#define operateur 0
typedef struct
{int type;
union {float op_r;char op_c;}val;
}composante;
void saisie(void)
Données et Algorithmique − P.TRAU
7.3 utilisations 32
/* marche pour toute notation puisque ne vérifie rien */
{
composante x;
char txt[100],*deb;
char rep;
init_pile();
printf("entrez opérandes (nombres) et opérateurs (+,−,*,/,C (cos),S)\n");
printf("séparés par des blancs ou virgules\n");
fflush(stdin);
gets(txt); /* on lit un texte qui sera traité par après */
deb=txt; /* deb pointe le début du texte non encore traité */
do
{
while(*deb==' '||*deb==',') deb++;
if(*deb==0)break;
if(isdigit(*deb)||*deb=='.'||(*deb=='−'&&isdigit(*(deb+1))))
{
x.type=operande;
sscanf(deb,"%f",&(x.val.op_r));
empiler(&x);
while(isdigit(*deb)||*deb=='.') deb++; /*pointer la suite*/
}
else /*cas d'un opérateur */
{
x.val.op_c=toupper(*(deb++));
x.type=operateur;
empiler(&x);
}
}
while(1);
}
float eval_post(void)
{
float r1,r2;
composante x;
if(depiler(&x)!=0) {puts("expression non postfixée");return(0);}
if(x.type==operande) return(x.val.op_r);
/* else inutile car les autres cas se finissent par return */
/* on traite d'abord les opérateurs unaires */
if (x.val.op_c=='C') return(cos(eval_post()));
if (x.val.op_c=='S') return(sin(eval_post()));
/* les deuxaires maintenant */
r2=eval_post();
r1=eval_post();
switch (x.val.op_c)
{
case '+':return(r1+r2);
case '−':return(r1−r2);
case '*':return(r1*r2);
case '/':return(r1/r2);
}
puts("erreur (code opératoire inconnu par exemple)");
return(0);
}
void main(void)
{
saisie();
printf("l'expression postfixée vaut %6.1f\n",eval_post());
}

merci d'avance
Hors ligneAnthony Le 16/05/2008 à 15:36 Profil de Anthony Configuration de Anthony

Fou du volant
Salut :)

Si t'as de l'argent je pense que quelqu'un pourra te le faire ;)
--

Hors ligneNina Le 16/05/2008 à 15:42 Profil de Nina Configuration de Nina

sérieux? tu plaisantes j'espere
Hors ligneMarculinos Le 16/05/2008 à 16:31 Profil de Marculinos Configuration de Marculinos

Viconaute Modérateur
Bienvenue au pays des Bisounours...
Hors ligneAnthony Le 16/05/2008 à 16:33 Profil de Anthony Configuration de Anthony

Fou du volant
Nina a écrit :
sérieux? tu plaisantes j'espere


Oui je plaisante, je pense que même contre de l'argent personne ne voudrait le faire Tu croyais vraiment que quelqu'un allait te faire tes devoirs comme ça tout cuit ? sur n'importe quel forum, les gens n'aiment pas trop ce genre de demandes . C'est un peu comme si je te disais "je voudrais que tu me nettoies ma voiture avant ce soir c'est super urgent je vais au bal", tu vois le truc ?
--

Hors ligneNina Le 16/05/2008 à 16:51 Profil de Nina Configuration de Nina

bon ok tant pis dsl j'ai tapé sur la mauvaise porte
Hors ligneMarculinos Le 16/05/2008 à 23:01 Profil de Marculinos Configuration de Marculinos

Viconaute Modérateur
Serieux, Antho, tu vas au bal? tu vas sortir?

Bon ok, moi, par contre,

Du coup,
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels