Пример #1
0
Файл: notas.cs Проект: hvzzzz/-
 // --------------------------------------------------------------
 static string ProcesarToken(string token, CPila pila, string expresionPosFijo)
 {
     // ----- Si token = ")" desapilar todos los operadores hasta encontrar "("
     if (token.Equals(")"))
     {
         while ((!pila.EsVacia()) && (!((string)pila.Cima()).Equals("(")))
         {
             expresionPosFijo = expresionPosFijo + (string)pila.Cima();
             // ---- Desapilar operador
             pila.Desapilar();
         }
         // ---- Quitar de la pila el ")"
         if (!pila.EsVacia())
         {
             pila.Desapilar();
         }
     }
     else
     if (token.Equals("+") || token.Equals("-") ||
         token.Equals("*") || token.Equals("/") ||
         token.Equals("^"))
     {
         // ---- Desapilar operadores, si existen de acuerdo a us precedencia
         while ((!pila.EsVacia()) && OkProcedencia(token, (string)pila.Cima()))
         {
             // ---- Agregar operador a la expresion PosFijo
             expresionPosFijo = expresionPosFijo + (string)pila.Cima();
             // ---- Desapilar operador
             pila.Desapilar();
         }
         // ---- Apilar nuevo operador
         pila.Apilar(token);
     }
     else
     // ---- Si es "(" apilar
     if (token.Equals("("))
     {
         pila.Apilar(token);
     }
     else
     // ---- Si no es " " agregar token a expreseionPosFijo, caso
     //      contrario ignorar token.
     if (!token.Equals(" "))
     {
         expresionPosFijo = expresionPosFijo + " " + token;
     }
     // ---- Retornar valor de expresión posFijo
     return(expresionPosFijo);
 }
Пример #2
0
Файл: notas.cs Проект: hvzzzz/-
        //-----------------------------------------------------------------
        public float Evaluar(string expresion)
        {
            // ----- Declarar objetos
            CPila           pila;
            StringTokenizer st;
            string          token;

            // ----- Crear un objeto pila
            pila = new CPila();
            // ----- Crear un objeto StringTokenizer
            st = new StringTokenizer(expresion, "+-*/^ ", true);

            // ----- Evaluar expresión, descomponiendo en tokens
            if (st.countTokens() > 0)
            {
                do
                {
                    token = st.nextToken();
                    ProcesarToken(token, pila);
                } while (st.hasMoreTokens());
            }
            // ----- Obtener el resultado de la pila
            return((float)pila.Cima());
        }
Пример #3
0
Файл: notas.cs Проект: hvzzzz/-
 public void Apilar(object pElemento)
 {
     SubPila  = new CPila(Elemento, SubPila);
     Elemento = pElemento;
 }
Пример #4
0
Файл: notas.cs Проект: hvzzzz/-
 // Métodos
 // --- Constructores
 public CPila(object pElemento = null, CPila pSubPila = null)
 {
     Elemento = pElemento;
     SubPila  = pSubPila;
 }