Ya he elaborado la version 2 de este evaluador de expresiones.
Ups!! Hola!!, despues de una larga ausencia aqui estoy de nuevo reportandome, ya saben la vida como estudiante limita muchas cosas, pero ya esta por finalizar este semetre por no decir que ya «finalizo».
Esta vez quiero compartir con ustedes uno de mis pequeños proyectos de Programacion, un evaluador de expreciones aritmeticas que es capaz realizar suma, resta, multiplicacion, divicion, potencia y modulo, con sus respectivo orden de prioridad asignado por los operabdos o por parentesis.
Lo primero que hace este programa es un analisis lexico y gramatical de la expresion, si la expresion contiene algun error, lanza un mensaje informando al usuario de dicho error, controla la prioridad de las operaciones y tambien la de los parentesis, de acuerdo al contexto de la expresion a evaluar crea su arbol sintactico, este evaluador esta basado en el patron de diseño interprete.
Como algo extra, genera el codigo en ensamblador para la expresion dada, este codigo se basa en un archivo de cabezera que contiene las macros para cada una de las operaciones, las operaciones y parentesis se evaluan de acuerdo a su prioridad utilizando una pila. El archivo .asm se guarda en «C:\ProgSist».
Por que lo pidieron, aqui el codigo.
Saludos!!! y comenten posibles mejoras…
men, parecido a ese proyecto me mandaron uno a mi,
tengo que hacerlo utilizando arbol binario.
dime si me puedes ayudar en eso
porque tengo la clase arbol binario pero es para trabajar
con enteros y no se como convertirla a string.
Salu2
@kenshicu
Tratare de ayudarte, solo dame mas detalles, ¿que es lo que tratas de convertir a String?.
Hola ayudame con el coigo en java para un evaluador de una expresion infija estoy desesperada xf te lo agradeceria un monton, intente descargar el que aparece allo pero no puedo, mas o menos lo q necesitos es un que evalue de izquierda a derecha y si el token es un ( se vaya a una pila operador y si es un numero a una de operandos…. Asta que sea toda evaluada y retorne solo un numero que q quede en la pila….. Xf..
Mira lo que tengo que hacer es este mismo evaluador de expresions que publicas, pero tengo que utilizar la clase arbol binario, debe ser para convertir la expresion utilizando el recorrido postorder, el problema es que no me queda mucho tiempo para entregarlo. Lo que pasa es que acabo de empesar a estudiar arbol binario y me sueltan este proyecto sin tener muchos conocimientos de esta materia y se me ha ido el tiempo estudiandolo mas que haciendolo.
Ahora lo que comente que queria convertir a string es el arbol binario
para poder guardar en el no solo operandos sino los operandores tambien
pero en lo que estoy enfrascado ahora es en llevar la ecuacion que da el usuario a notacion infija para convertirla con el arbol binario a postfija y ya despues utilizando pilas hacer el calculo final.
no se si me explique bien
Si me puedes ayudar te lo agradecere
No veo aqui como descargar tu codigo fuente.
Mira esto es lo que me piden hacer:
Árbol Binario: Construir un Editor de Expresiones. El mismo debe contener y cumplir con diferentes requisitos: serán permitidas sólo expresiones numéricas, sin variables, se aceptarán las operaciones matemáticas de suma (+), multiplicación (*), resta (-), y división (/) y se debe tener en cuenta los signos de agrupamiento paréntesis ( ) y corchetes [ ] en ese orden de prioridad. Se deberá comprobar que la expresión esté bien escrita, es decir, que no hayan expresiones que no sean las que se pueden resolver. Se dará como resultado la resolución de esta fórmula y tendrá que existir un buen nivel de interactividad con el usuario.
@ kenshicu
Ahora te entiendo mejor, mira yo puedo facilitarte el codigo fuente, pero en realidad utilizo otra tecnica para evaluar las expresiones matematicas ( no es la que tu me planteas ), esta tecnica se llama «patron interprete», y si uso un arbol, pero no es binario. Cada una de las ramas que se crean ( debido a la expresion de entrada ) se evaluan de manera recursiva ( primero las operaciones de mayor presedencia ), cada una de las evaluaciones ( valor numerico ) del nivel inferior es retornado al nivel inmediato superior.
Como puedes notar, la expresion matematica no es necesario tranformarla a notacion posfija, me haorro la memoria que necesitaria la pila que contendria la notacion posfija. El algoritmo de este evaluador toma la expresion tal cual ( en notacion infija, tal como la introduce el usuario ), la unica pila que se utiliza es la que requiere la recursividad, pero esa pila el mismo lenguaje de programacion se encarga de administrarla.
Para poder hacer todo esto se requiere primero que la expresion este bien escrita, para comprobar esto tengo una clase que se encarga de realizar un analisis lexico ( en esta parte se detectan errores de escritura en la expresion ), la cual retorna tokens a otra clase que construye el arbol sintactico (en esta parte se detectan los errores al evaluar la expresion, como por ejemplo la divicion entre cero ), ya teniendo el arbol sintactito, otra clase evalua de manera recursiva el arbol sintactico, y al final solo se retorna un tipo double que contiene el valor de toda la expresion.
Saludos…
Ok man gracias por responder
aunque ya lo estoy armando con árbol binario
si me puedes mandar el código a mi e-mail mejor
para comparar algunos aspectos, y ver de cerca la técnica que utilizas
Saludos
gracias por responderme cdo puedas revisa tu correo salu2
Muy buen post esto tambien me lo dejaron pero igual tengo q hacer mi arbol binario, sera que me podes mandar el codigo a mi correo.
Gracias
Que tal, fijate que acabo de ver y leer la descripcion de tu proyecto de evaluador de expresiones aritmeticas, pues en mi curso de lenguajes formales me dejaron como proyecto realizar un pequeño compilador de expresiones algebraicas, en la primera fase me piden el editor de texto y entorno grafico, asi como tambien el analizador lexico, realizado a travez de pilas, automata determinitico finito, similar al tuyo, ahora bien, si pudieras ayudarme con en las transiciones de estado (en la codificacion en java) ya que me esta costantdo mucho, solo tengo la interfaz grafica que me abre archivos de entrada pero no puedo realizar el analisis lexico.
disculpa como puedo descargar tu proyecto y si puedieras me falicitaras el codigo, como el otro amigo tambien estoy trabjando en un proyecto de arboles de analisis sintacticos, y necesito ejemplos para poder realizarlo, te lo agradeceria mucho
HOLA PERDONA LA MOLESTIA PERO, ANDO ALGO DESESPERADO BUSCANDO AYUDA, NESECITO HACER ALGO SIMILAR A TU PROGRAMA PERO KE ME DIBUJE EL ARBOL SINTACTICO PODRIAS AYUDARME EN ESO? infiernomaya@hotmail.com
hola .. en estos momentos me encuentro realizando un compilador de «C» en java.
el compilador es de 2 pasadas asi que no llego a la ejecucion del codigo, en estos me encuentro realizando el editor, use un jtextpanel que me perminte colorear de diferentes colores diferentes partes del texto, esto lo uso para colorear las palabras reservadas .. bueno vamos al punto yo voy evaluando el codigo que introduce el usuario mientras lo escribe y quisiera evaluar las expresiones ya tengo una forma de hacerlo pero es un poco larga y fastidiosa .. me gustaria saber si me puedes facilitar la clase que evalua la expresion lexicamente .. para saber como lo hiciste tu y ver si me sirve para lo qe estoy haciendo. gracias
Me puedes ayudar con un pequeño programita que tengo que hacer, este consiste asi: hacer que me devuelva el resultado de operaciones aritmeticas, si ingreso: 2+3-1/2*6, debe devolverme el valor de estas operaciones, HAy que hacerlo usando Arboles Binarios, y en lenguaje c++, tal vez puedas ayudarme, mandame cualquier cosa a este correo, adam_52fix@yahoo.es
r4fr3,
que buen programa, me gustaria tener el codigo
Podría x favor facilitarme el código fuente, ya que me serviría de guía para una tarea ke tengo ke realizar; gracias de antemano.
Hola!! queria saber si me podias dejar el codigo porque ahora mismo estoy con una practica parecida y este codigo me podria ayudar mucho
Ya he puesto el link para descargar el codigo del evaluador de expresiones en java.
Saludos.
parcero sera que me puede mandar el codigo funte que no se como descargarlo me serviria de mucho mi correao es marlondavidg@gmail.com
Saludos me seria de gran ayuda que por favor me enviaras el link al correo para descargar el evaluador de expresiones aritmeticas y el codigo porque no lo veo en el sitio , mi correo es aga(arroba)uclv.edu.cu
Gracias.
que tal como te va, te cuento que estaba revisando y no he encontrado el link donde esta el codigo…
men no esta el link, xfa subalo, para poder descargarlo.
Se le agradecería mucho!!
hola;
busco el link para descargar los archivos…
no veo por ninguna parte el link de descarga
[…] 28 06 2009 Debio a los comentarios de personas a las cuales les intereso el proyecto del evaluador de expresiones, decidi retomarlo y agregarle algunos aspectos para acelerar el proceso de evaluacion, tambien le […]
Sin palabras! así me deja tu programa r4mfr3, finalmente llevaba semanas tratando de hacer una cosa parecida! asi q muchas gracias por contribuir al desarrollo de aplicaciones libres…
he estado revisando tu codigo y me parece que esta bien organizado tambien he leido los post y creo que es presisamente a traves de los arboles binarios que tu codigo puede ser reducido y optimizado dramaticamente deberias retomar este proyecto con esa optica no importa que no publiques ningun codigo de todas formas es bueno saber que hay gente que no es envidiosa asi que por eso te escribo para que tengas apoyo y no solo peticiones jejeje gracias Dios te bendiga
@gustav cast
por que muchos buscan ayuda (y por un reto mio) de como construir un evaluador pero con arboles binarios, hace ya algun tiempo he estado dandole algunos retoques al codigo, de tal forma que este construya un arbol binario apartir de una expresion en formato posfijo derivado de la expresion original, pero por cuestiones de tiempo (mi escuela, tareas, trabajo y el servicio social) no he avanzado tan rapido, voy lento pero seguro.
Hasta donde tengo ya construyo el arbol de operandos y operadores (los puedo recorrer), checo la sintaxis de la expresion de forma lexica y gramatical para detectar errores antes de evaluar, bueno en fin solo me falta adaptar la parte de la evaluacion de los arboles, espero terminarlo pronto y en cuanto lo tenga lo compartire con ustedes (sera la V3).
Saludos, gracias por tu apoyo y el consejo.
Bueno muchas gracias por el código, tengo un proyecto algo similar solo me falta corregir algunos errores y tu codigo (muy completo por cierto) espero que me ayude a despejar las dudas q tengo.
Salu2
hola de nuevo kisiera ke le escribieras a kenshicu y le digas de mi parte ke me gustaria ver su proyecto para intercambiar palabras y ke me escriba por favor saludos espero tu respuesta ….
por favor enviame tu codigo fuente ke no puedo descargarlo dalu2222
nesecito el codigo fuente ke no puedo descargarlo ….
Escribeme a
kenshicu[arroba]gmail.com
@milena
Revisa tu mail, respondiendo a tu peticion ayer te envie el codigo fuente de las dos versiones del evaluador de expresiones.
Saludos…
No puedo enviarte el codigo al correo que dejaste.
DNS Error: Domain name not found
El dominio de tu mail parece no existir.