Expression Arithmétique

bluenox Messages postés 2 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 20 juillet 2007 - 23 janv. 2006 à 20:29
spiky31 Messages postés 106 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 11 février 2008 - 23 janv. 2006 à 21:13
Bonjour,



J'ai un souci, j'ai essayé de me renseigner sur les différentes sources mais pas trouvé.



Je fais un programme me permettant de calculer les opérations arithmétiques, le code utilise les piles;

*L'utilisateur enregistre les valeurs,

*ensuite on les lit a l'envers apres les avoirs empilées,

*Puis si on trouve un opérateur quand on depile on calcul



Mon problème est que je ne sais pas comment tranformé l'operateur
(+,-,/,*) qui est en char en un format convenable voila le code auriez
vous une solution ou plutot un chemin a suivre car je ne vois pas.



/********************************************************************************/

/*
Objet : Fonction d'expression d'évaluation
arithmetique
*/

/********************************************************************************/

void Algorithme(){

Pile *pP;

Donnee Don1, Don2;

char *tab;

int i, j;

float x;



puts("Veuillez entrer un operation arithmetique");

scanf("%s", tab); getchar();



pP=Initialisation();

for(i=0; tab[i]!='\n';i++){}

for(j=i; j>0 ;j--){

if(tab[j]!= '+' || tab[j]!= '-' || tab[j]!= '*' || tab[j]!= '/')

Empile(*pP, x=(float)(tab[j]));

else if(tab[j]== '+' || tab[j]== '-' || tab[j]== '*' || tab[j]== '/'){

Depile(&pP, &Don1);

Depile(&pP, &Don2);

Don1=Don1
tab[j] Don2; // Comment modifié le
tab[j]

Empile(&pP, &Don1);

}

}

Suppression(&pP);

}



Merci

1 réponse

spiky31 Messages postés 106 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 11 février 2008
23 janv. 2006 à 21:13
Simple :

switch (tab[i])
{
case '+' :
Don1 = Don1 + Don2;
break;
case '-' :
...
}

voila a+
0
Rejoignez-nous