Page précédente | Page suivante | Page : 1

traduire en expression post-fixée (en turbo pascal)
Hors ligne Nina 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 ligne Anthony 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 ligne Nina Le 16/05/2008 à 15:42 Profil de Nina Configuration de Nina
sérieux? tu plaisantes j'espere
Hors ligne Marculinos Le 16/05/2008 à 16:31 Profil de Marculinos Configuration de Marculinos
Viconaute Modérateur
Bienvenue au pays des Bisounours...
--
The Matrix has you...

                                                   Vous êtes ici  ^
Hors ligne Anthony 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 ligne Nina 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 ligne Marculinos 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,
--
The Matrix has you...

                                                   Vous êtes ici  ^

Page précédente | Page suivante | Page : 1

Aide informatique | Communauté d'entraide informatique | Aide informatique | Forum d'assistance informatique | Forum-Vista | Formation informatique | Forum Informatique | Devenir partenaire