Bueno, ya que estamos, te pregunto también por esta función que acabo de hacer. Mi intención es que evalue una expresión postfijo:
Código C:
Ver originalint evaluar_postFijo (char * postFijo){
int i = 0;
ptrNuevaPila pila = NULL;
while ( postFijo [i] != '\0' ){
if ( esOperador ( postFijo [i] ) ){
char b = pila->dato;
sacar_pila ( &pila );
char a = pila->dato;
sacar_pila ( &pila );
if ( postFijo [i] == '+' ){
empujar_pila ( &pila, ( a+b ) );
}
else if ( postFijo [i] == '-' ){
empujar_pila ( &pila, ( a-b ) );
}
else if ( postFijo [i] == '*' ){
empujar_pila ( &pila, ( a*b ) );
}
else if ( postFijo [i] == '/' ){
empujar_pila ( &pila, ( a/b ) );
}
}
else empujar_pila ( &pila, postFijo [i] );
i++;
}
int a = pila->dato;
return a;
}
El problema es que al asignar a las variables "a" y "b" el caracter de pila->dato toma los enteros en formato decimal ¿?
Un saludo!