Esempio n. 1
0
        public static void EvaluateExpression(String str)
        {
            StackOp pila = new StackOp(30);
            char    op;                                         //Operador u operando

            for (int i = 0; i < str.Length; i++)
            {
                op = str.ElementAt(i);
                if (op >= '0' && op <= '9')
                {
                    if (!pila.Push(op))
                    {
                        System.out.println("La expresión posfija no puede evaluarse, PILA LLENA");
                        return;
                    }
                    continue;
                }
                else if (Car == '+' || Car == '-' || Car == '*' || Car == '/')
                {
                    if (!Obj.Retira())
                    {
                        System.out.println("La expresión posfija esta incorrecta");
                        return;
                    }
                    float V2 = Obj.Dr;

                    if (!Obj.Retira())
                    {
                        System.out.println("La expresión posfija esta incorrecta");
                        return;
                    }
                    float V1  = Obj.Dr;
                    float Res = 0.0f;
                    switch (Car)
                    {
                    case '+': Res = V1 + V2; break;

                    case '-': Res = V1 - V2; break;

                    case '*': Res = V1 * V2; break;

                    case '/': Res = V1 / V2; break;
                    }
                    Obj.Inserta(Res);
                }
            }
            if (Obj.Retira())
            {
                System.out.println("Resultado= " + Obj.Dr);
            }
        }
Esempio n. 2
0
        public static void EvaluateExpression(String str)
        {
            StackOp pila = new StackOp(30);
            char op;                                            //Operador u operando
            for (int i = 0; i < str.Length; i++)
            {
                op = str.ElementAt(i);
                if (op >= '0' && op <= '9')
                {
                    if (!pila.Push(op))
                    {
                        System.out.println("La expresión posfija no puede evaluarse, PILA LLENA");
                        return;
                    }
                    continue;
                }
                else if (Car == '+' || Car == '-' || Car == '*' || Car == '/')
                {
                    if (!Obj.Retira())
                    {
                        System.out.println("La expresión posfija esta incorrecta");
                        return;
                    }
                    float V2 = Obj.Dr;

                    if (!Obj.Retira())
                    {
                        System.out.println("La expresión posfija esta incorrecta");
                        return;
                    }
                    float V1 = Obj.Dr;
                    float Res = 0.0f;
                    switch (Car)
                    {
                        case '+': Res = V1 + V2; break;
                        case '-': Res = V1 - V2; break;
                        case '*': Res = V1 * V2; break;
                        case '/': Res = V1 / V2; break;
                    }
                    Obj.Inserta(Res);
                }

            }
            if (Obj.Retira())
                System.out.println("Resultado= " + Obj.Dr);
        }