cs_tototiti
Messages postés5Date d'inscriptionjeudi 3 avril 2003StatutMembreDernière intervention 6 janvier 2006
-
6 janv. 2006 à 15:56
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024
-
7 janv. 2006 à 15:14
Bonjour,
j' ai un projet à rendre qui consiste à faire un calculatrice en C en utilisant une pile.
Il faut entrer toute l' expression d'un coup et completement parenthésée:
ex: (((1+5)*7)+(3/9))
J' ai commencé à faire un petit programme mais je n 'arrive pas à gerer les entiers avec scanf("%s", exp) donc j' ai tous mis en char.
Le probleme c'est que mon programme compile mais quand je l' execute il n' y a aucune operation qui marche: ça me revoie des codes ASCII ou autres...
S' il vous plait si il y' a quelqu' un pour m' aider ou me corriger ça serait sympa.
if(exp[i] != ')' ) /* si l' element parcouru dans le tableau n'est pas une ) l' empiler */
{
empiler(&p, exp[i]);
}
else
{
op3=sommet(p); /*le sommet est un operande */
depiler(&p); /* on depile */
op2=sommet(p); /*le sommet est un operateur */
depiler(&p); /* on depile */
op1=sommet(p); /*le sommet est un operande */
depiler(&p); /* on depile */
switch (op2)
{
case +: /* si op2 est un + on empile le resultat de op1+op3 */
empiler(&p, op1+op3);
break;
case -: /* si op2 est un - on empile le resultat de op1-op3 */
empiler(&p, op1-op3);
break;
case *: /* si op2 est un * on empile le resultat de op1*op3 */
empiler(&p, op1*op3);
break;
case /:
if(op3==0)
printf("erreur div impossible \n ") ;
else /* si op2 est un / et op3 !=0 on empile le resultat de op1/op3 */
empiler(&p, op1+op3);
break;