Esempio n. 1
0
        //*********************************** Calculos por PostOrden//


        public int calculoPostOrden()
        {
            leerAgregar paraPost = new leerAgregar();
            CalculoPre  nuevo    = new CalculoPre();

            paraPost.leer(mostrarPost2);
            Caracter primero = paraPost.Primero;


            for (int i = 0; i < mostrarPost2.Length; i++)
            {
                if (primero.Dato != "*" && primero.Dato != "/" && primero.Dato != "+" && primero.Dato != "-")
                {
                    nuevo.agregarPilaPre(new Caracter(primero.Dato));
                    primero = primero.Siguiente;
                }
                else
                {
                    switch (primero.Dato)
                    {
                    case "*":
                        string derecha = nuevo.verUltimo().Dato;
                        nuevo.sacarUltimo();
                        string izquierda = nuevo.verUltimo().Dato;
                        nuevo.sacarUltimo();

                        int primeroPost = Convert.ToInt16(izquierda), despPrimeroPost = Convert.ToInt16(derecha), multiplicar;
                        multiplicar = primeroPost * despPrimeroPost;

                        string convertido = Convert.ToString(multiplicar);
                        nuevo.agregarPilaPre(new Caracter(convertido));
                        primero = primero.Siguiente;
                        break;

                    case "/":
                        string derecha1 = nuevo.verUltimo().Dato;
                        nuevo.sacarUltimo();
                        string izquierda1 = nuevo.verUltimo().Dato;
                        nuevo.sacarUltimo();

                        int primeroPost1 = Convert.ToInt16(izquierda1), despPrimeroPost1 = Convert.ToInt16(derecha1), dividir;
                        dividir = primeroPost1 / despPrimeroPost1;

                        string convertido1 = Convert.ToString(dividir);
                        nuevo.agregarPilaPre(new Caracter(convertido1));
                        primero = primero.Siguiente;
                        break;

                    case "-":
                        string derecha2 = nuevo.verUltimo().Dato;
                        nuevo.sacarUltimo();
                        string izquierda2 = nuevo.verUltimo().Dato;
                        nuevo.sacarUltimo();

                        int primeroPost2 = Convert.ToInt16(izquierda2), despPrimeroPost2 = Convert.ToInt16(derecha2), restar;
                        restar = primeroPost2 - despPrimeroPost2;

                        string convertido2 = Convert.ToString(restar);
                        nuevo.agregarPilaPre(new Caracter(convertido2));
                        primero = primero.Siguiente;
                        break;

                    case "+":
                        string derecha3 = nuevo.verUltimo().Dato;
                        nuevo.sacarUltimo();
                        string izquierda3 = nuevo.verUltimo().Dato;
                        nuevo.sacarUltimo();

                        int primeroPost3 = Convert.ToInt16(izquierda3), despPrimeroPost3 = Convert.ToInt16(derecha3), sumar;
                        sumar = primeroPost3 + despPrimeroPost3;

                        string convertido3 = Convert.ToString(sumar);
                        nuevo.agregarPilaPre(new Caracter(convertido3));
                        primero = primero.Siguiente;
                        break;
                    }
                }
            }
            int resultado = Convert.ToInt16(nuevo.verUltimo().Dato);

            return(resultado);
        }
Esempio n. 2
0
        //*********************************** Calculos por PreOrden//

        public int calculoPreOrden()
        {
            leerAgregar paraPre = new leerAgregar();
            CalculoPre  nuevo   = new CalculoPre();

            paraPre.leer(mostrarPre2);
            Caracter ultimo = paraPre.Ultimo;

            for (int i = 0; i < mostrarPre2.Length; i++)
            {
                if (ultimo.Dato != "*" && ultimo.Dato != "/" && ultimo.Dato != "+" && ultimo.Dato != "-")
                {
                    nuevo.agregarPilaPre(new Caracter(ultimo.Dato));
                    ultimo = ultimo.Anterior;
                }
                else
                {
                    switch (ultimo.Dato)
                    {
                    case "*":
                        string primero = nuevo.verUltimo().Dato;
                        nuevo.sacarUltimo();
                        string segundo = nuevo.verUltimo().Dato;
                        nuevo.sacarUltimo();

                        int ultimoPre = Convert.ToInt16(primero), anteultimoPre = Convert.ToInt16(segundo), multiplicar;
                        multiplicar = ultimoPre * anteultimoPre;

                        string convertido = Convert.ToString(multiplicar);
                        nuevo.agregarPilaPre(new Caracter(convertido));
                        ultimo = ultimo.Anterior;
                        break;

                    case "/":
                        string primero1 = nuevo.verUltimo().Dato;
                        nuevo.sacarUltimo();
                        string segundo1 = nuevo.verUltimo().Dato;
                        nuevo.sacarUltimo();

                        int ultimoPre1 = Convert.ToInt16(primero1), anteultimoPre1 = Convert.ToInt16(segundo1), dividir;
                        dividir = ultimoPre1 / anteultimoPre1;

                        string convertido1 = Convert.ToString(dividir);
                        nuevo.agregarPilaPre(new Caracter(convertido1));
                        ultimo = ultimo.Anterior;
                        break;

                    case "-":
                        string primero2 = nuevo.verUltimo().Dato;
                        nuevo.sacarUltimo();
                        string segundo2 = nuevo.verUltimo().Dato;
                        nuevo.sacarUltimo();

                        int ultimoPre2 = Convert.ToInt16(primero2), anteultimoPre2 = Convert.ToInt16(segundo2), restar;
                        restar = ultimoPre2 - anteultimoPre2;

                        string convertido2 = Convert.ToString(restar);
                        nuevo.agregarPilaPre(new Caracter(convertido2));
                        ultimo = ultimo.Anterior;
                        break;

                    case "+":
                        string primero3 = nuevo.verUltimo().Dato;
                        nuevo.sacarUltimo();
                        string segundo3 = nuevo.verUltimo().Dato;
                        nuevo.sacarUltimo();

                        int ultimoPre3 = Convert.ToInt16(primero3), anteultimoPre3 = Convert.ToInt16(segundo3), sumar;
                        sumar = ultimoPre3 + anteultimoPre3;

                        string convertido3 = Convert.ToString(sumar);
                        nuevo.agregarPilaPre(new Caracter(convertido3));
                        ultimo = ultimo.Anterior;
                        break;
                    }
                }
            }
            int resultado = Convert.ToInt16(nuevo.verUltimo().Dato);

            return(resultado);
        }