Exemplo n.º 1
0
        private string convertir(string infija)
        {
            String    posfija = "";
            PilaLista pila    = new PilaLista();

            for (int i = 0; i < infija.Length; i++)
            {
                //obtengo el caracter
                char caracter = infija[i];
                if (operador(caracter))
                {
                    if (pila.pilaVacia())
                    {
                        pila.insertar(caracter);
                    }
                    else
                    {
                        //evuluamos la prioridad
                        if (prieoridadExpresion(caracter) > prieoridadPila((char)pila.cimaPila()))
                        {
                            pila.insertar(caracter);
                        }
                        else
                        {
                            //desapilar
                            posfija += pila.quitar();
                            //apilamos el nuevo operador
                            pila.insertar(caracter);
                        }
                    }
                }
                else
                {
                    posfija += caracter;
                }
            }
            //sacamos todo lo de la pila
            while (!pila.pilaVacia())
            {
                //desapilamos y guardamos todos los datos de la pila en la posfija
                posfija += pila.quitar();
            }
            return(posfija);
        }
Exemplo n.º 2
0
        private double evaluarPosfija(string posfija)
        {
            PilaLista pila = new PilaLista();

            for (int i = 0; i < posfija.Length; i++)
            {
                char caracter = posfija[i];
                if (!operador(caracter))
                {
                    double num = double.Parse(caracter.ToString());
                    pila.insertar(num);
                }
                else
                {
                    double desapilar1 = (double)pila.quitar();
                    double desapilar2 = (double)pila.quitar();
                    double desapilar3 = operar(caracter, desapilar1, desapilar2);
                    pila.insertar(desapilar3);
                }
            }
            return((double)pila.cimaPila());
        }