ayúdenme a programar una calculadora científica
hola amigos soy nuevo de paquete en este sitio XDXD
bueno soy un novato en esto de programación en delphi y espero que me ayuden. para mi primer programa lo que intento hacer es una calculadora científica que pueda calcular múltiples ejercicios como por ejemplo. 10-2*5 por el momento ya programe lo que es una calculadora básica que +,-,*,/(y+x) este es mi codigo. bueno espero que me den alguna ayuda o idea o consejo de como puedo hacer un algoritmo para que pueda programar una calculadora científica gracias. |
Bienvenido al club.
Antes de nada, te recomiendo que revises la guía de estilo de los foros. Estaría bien un título descriptivo en tu mensaje y algo más de concreción en tu pregunta, ya que es algo genérica. Imagino que el procedimiento/evento btn11Click es el que correspode a realizar el cálculo. Ese procedimiento lo has programado para trabajar con dos operadorandos y 1 operador, pero no te va a servir para más combinaciones (com la que necesitas), porque no puedes programar utilizando los IF todas las combinaciones posibles como has hecho ahí. Debes enfocar ese procedimiento a generar un evaluador de expresiones (o utilizar uno ya existente si te dejan). Si debes hacerlo tú, puedes pensar en un procedimiento similar a este:
Que te permita evaluar algo como lo que comentas: 10-(5-3)*5 (1) Separar los operandos y operadores (2) Evaluar los operando de forma individual por si son complejos del estilo a: (5-3) (3) De forma recursiva o iterativa volver a evaluar teniendo en cuenta las prioridades. Si tuvieras algo como esto: 10-(5-3)*5 Debes hacer por pasos: ----------------------- 10-(5-3)*5 ----------------------- Aplanar 10 - (5-3) * 5 ----------------------- Evaluar 10 - 2 * 5 ----------------------- Evaluar 10 - 10 ----------------------- Evaluar 0 |
Después de toda esta parrafada, acabado de recordar que las versiones nuevas de Delphi traen un evaluador.
Si usas (creo) una versión posterior a la XE2, puedes utilizar el evaluador que viene con LiveBindings. En concreto en la Unit System.Bindings.EvalProtocol hay un método Evaluate (http://docwiki.embarcadero.com/Libra...nding.Evaluate) que permie evaluar una expresión. Antes tendrás que compilarla con un método Compile (http://docwiki.embarcadero.com/Libra...ession.Compile) que hay en System.Bindings.Evaluator. Si quieres ver un ejemplo de utilización, aquí tienes algunos: https://theroadtodelphi.com/2012/07/...ion-evaluator/ http://stackoverflow.com/questions/1...using-icompile |
La franja horaria es GMT +2. Ahora son las 05:35:12. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi