//*********************************** 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); }
//*********************************** 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); }