Ver Mensaje Individual
  #9 (permalink)  
Antiguo 26/07/2011, 05:16
Checho360
 
Fecha de Ingreso: marzo-2011
Mensajes: 94
Antigüedad: 13 años, 1 mes
Puntos: 3
Respuesta: Infijo a postfijo

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 original
  1. int evaluar_postFijo (char * postFijo){
  2.    
  3.     int i = 0;
  4.    
  5.     ptrNuevaPila pila = NULL;
  6.    
  7.     while ( postFijo [i] != '\0' ){
  8.          
  9.           if ( esOperador ( postFijo [i] ) ){
  10.                
  11.                char b = pila->dato;
  12.                
  13.                sacar_pila ( &pila );
  14.                
  15.                char a = pila->dato;
  16.                
  17.                sacar_pila ( &pila );
  18.                
  19.                if ( postFijo [i] == '+' ){
  20.                    
  21.                     empujar_pila ( &pila, ( a+b ) );
  22.                    
  23.                }
  24.                
  25.                else if ( postFijo [i] == '-' ){
  26.                    
  27.                     empujar_pila ( &pila, ( a-b ) );
  28.                    
  29.                }
  30.                
  31.                else if ( postFijo [i] == '*' ){
  32.                    
  33.                     empujar_pila ( &pila, ( a*b ) );
  34.                    
  35.                }
  36.                
  37.                else if ( postFijo [i] == '/' ){
  38.                    
  39.                     empujar_pila ( &pila, ( a/b ) );
  40.                    
  41.                }
  42.                
  43.           }
  44.          
  45.           else empujar_pila ( &pila, postFijo [i] );
  46.          
  47.           i++;
  48.          
  49.     }
  50.    
  51.     int a = pila->dato;
  52.    
  53.     free (pila);
  54.    
  55.     return a;
  56.    
  57. }

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!