elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  evaluacion postfija
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: evaluacion postfija  (Leído 9,115 veces)
BTO911

Desconectado Desconectado

Mensajes: 2


Ver Perfil
evaluacion postfija
« en: 23 Octubre 2013, 23:04 pm »

hola a todos se que es algo facil  :-X pero no consigo sacarlo  :-\ espero y me puedan ayudar mi codigo
para evaluar una expresion en postfijo

Código
  1. public static void main(String arg[]){
  2. String expres = "362*4/+";  //Resultado debe ser 6
  3.        System.out.println("Evaluacion de una expresion en posfijo");
  4.        System.out.println("\n Exp posfija:"+expres+"\n");
  5.        //convertir array expresion
  6.        char[]expresiion = expre.toCharArray();
  7.        //Pila de salida y pila de entrada
  8.        char simboloEntrada,op1,op2,valor=0;
  9.        MyFirstStack pilita = new MyFirstStack(expresiion.length);
  10.  
  11.  
  12.  
  13.        for(int a=0;a<expresiion.length;a++){
  14.            simboloEntrada = expre.charAt(a);
  15.            if(simboloEntrada != '+' && simboloEntrada != '-' && simboloEntrada != '*' && simboloEntrada != '/'){
  16.                pilita.push(simboloEntrada);
  17.            }
  18.            else {
  19.  
  20.                op1= pilita.pop();
  21.                op2= pilita.pop();
  22.                valor=(char)evaluate(simboloEntrada,op1,op2);
  23.  
  24.                pilita.push(valor);
  25.            }
  26.        }
  27.  
  28.  
  29.        System.out.print("El valor:"+valor);
  30.  
  31.    }
  32. static int evaluate (char cad, char a, char b ){
  33.  
  34.    int op1=a-48;
  35.    int op2=b-48;
  36.  
  37.    if(cad== '-')
  38.        return op1-op2;
  39.  
  40.    if(cad== '+')
  41.        return op1+op2;
  42.  
  43.    if(cad== '/')
  44.        return op1/op2;
  45.  
  46.    if(cad== '*')
  47.        return op1*op2;
  48.  
  49.  
  50.    return 0;
  51.    }
  52. }

Muchas gracias.


En línea

egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: evaluacion postfija
« Respuesta #1 en: 29 Octubre 2013, 19:37 pm »

¿Intentaste intercambiar el orden de las instrucciones?

Código
  1. op1 = pilita.pop();
  2. op2 = pilita.pop();
  3.  

Creo que por ahí anda el error.

Suponte tu que tienes esto en tu pila.
12/4
[12][4][/]

Luego haces
operator = pop() devuelve el '/'
op1 = pop() devuelve '4'
op2 = pop() devuelve '12'

Finalmente
resultado = op1 / op2 ( osea 4 / 12)


Saludos!


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Quitar mensaje de Evaluacion a dll
Ingeniería Inversa
jwmoreira 1 2,685 Último mensaje 11 Febrero 2009, 01:17 am
por Amerikano|Cls
Notas de evaluación Java
Java
Meta 7 5,950 Último mensaje 17 Mayo 2012, 04:20 am
por RyogiShiki
Como crear un agoritmo que convierta una expresion postfija a prefija??
Programación C/C++
milber10 0 2,900 Último mensaje 16 Noviembre 2011, 21:44 pm
por milber10
Evaluación de una expresión postfija
Programación C/C++
sinhue 0 4,724 Último mensaje 1 Octubre 2016, 05:09 am
por sinhue
Ayuda con la conversión de notación infija a postfija
Programación C/C++
GominaTilted 1 3,181 Último mensaje 18 Abril 2019, 07:36 am
por Beginner Web
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines