Skip to content

RobertoRojas/Calculadora_expresiones_aritmeticas

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Calculo con orden de operaciones.

Hay ocasiones en las que se necesita hacer una operación matemática simple en tiempo de ejecución de un programa. Como cuando se insertá una pequeña calculadora a un sistema de cobro de una tienda.

El problema comienza cuando se llega a una situación en la que si no se hace el cálculo en el orden correcto el resultado final puede llegar a ser erróneo, por ejemplo:

2+3*4

Resultados
20
14

¿Cuál de los dos es el resultado correcto? Bueno el resultado es 12, debido a que primero se tiene que multiplicar y luego dividir, esto lo indican las reglas de PEDMAS.

Notacion Robertiana

Esta notación viene basada en la notación pocala inversa y la cual tiene una explicación más profunda en la wiki del proyecto, pero en general es la conversión de una cadena a un conjunto de subexpresiones leyendo de izquierda a derecha la sentencia.

Expresion: 2*3+6/(3+3)

Notacion robertiana: ([{[2.0][3.0] *}][{[6.0][([3.0][3.0][0.0] ++)] /}][0.0] ++)

El siguiente proyecto intenta dar una solución a este problema, otorgando una herramienta con la cual podamos hacer estos cálculos de manera sencilla. Hay dos clases que se pueden utilizar para estos fines, las cuales serían:

  • Calculadora Esta clase nos permite validad la expresión, si es que no tenemos una manera de estar seguros que la información ingresada por el usuario sea correcta, por ejemplo:
String expresion = "4+2(9)";
Calculadora calculadora = Calculadora.getInstancia();
calculadora.setSentencia(expresion);
if(calculadora.isValido()){
    System.out.println(calculadora.getResultado());
}else{
    System.out.println(calculadora.showValidacion());
}
  • Robertiano Si ya se tiene un sistema que valide la expresión, se puede usar directamente la clase que efectúa el cálculo sin necesidad de gastar recursos revalidando la expresión, por ejemplo:
String expresion = "4-(-6)";
Robertiano robertiano = new Robertiano(expresion);
double resultado = robertiano.getResultado();
System.out.println(resultado);
Espero que estas herramientas sean de utilidad para ti y no dudes en colaborar si lo crees pertinente.