Ver Mensaje Individual
  #2  
Antiguo 29-06-2016
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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:

Código Delphi [-]
function Evaluar(pExpresion:string):integer;
function Evaluar(pExpresion:string):single;
function Evaluar(pExpresion:string):double;

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
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita