Visual Basic - Evaluar expresiones con prioridad de operadores

Life is soft - evento anual de software empresarial
   
Vista:

Evaluar expresiones con prioridad de operadores

Publicado por Luis (8 intervenciones) el 06/09/2007 21:54:11
Como puedo hacer para evaluar expresiones literales matematicas con orden de precedencia de operadores aritmeticos. Ejemplo: (SM*12)+5. Primero tengo que operar el parentesis y despues la suma para obtener el resultado final
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Evaluar expresiones con prioridad de operadores

Publicado por yo (8 intervenciones) el 06/09/2007 22:00:17
ok, es así.
primero evalúa SM*12 y despues le suma 5
¿cual es el problema?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Evaluar expresiones con prioridad de operadores

Publicado por Luis (8 intervenciones) el 06/09/2007 22:03:47
Mi pregunta es como hago para evaluar tales expresiones si vienen dadas como cadenas de caracters o strings
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Evaluar expresiones con prioridad de operadores

Publicado por P. J. (173 intervenciones) el 07/09/2007 16:09:27
Por lo que ten entiendo esto te podria ayudar:

Agrega a tu Form, TextBox: txtExpression; CommandButton: cmdEvaluate; Label:lblResult

Y pega:

Option Explicit

Private Sub cmdEvaluate_Click()
Dim excel_app As Object
Dim excel_sheet As Object
Set excel_app = CreateObject("Excel.Application")
excel_app.Workbooks.Add
If Val(excel_app.Application.Version) >= 8 Then ' Verificando version.
Set excel_sheet = excel_app.ActiveSheet
Else
Set excel_sheet = excel_app
End If

excel_sheet.Cells(1, 1) = "=" & txtExpression.Text
lblResult.Caption = excel_sheet.Cells(1, 1) 'resultado
excel_app.ActiveWorkbook.Close False
excel_app.Quit
Set excel_sheet = Nothing
Set excel_app = Nothing
End Sub

Al ingresar al textbox: (5*8) + 6^2, esto lo evaluara, si es con incognitas es muxo mas codigo ya tu ve.

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Evaluar expresiones con prioridad de operadores

Publicado por ivan (1041 intervenciones) el 07/09/2007 19:25:11
.. y digo yo, no habría otra forma mas sencilla de hacer eso?
Como colocar un ScriptControl en el formulario poner el siguiente código:

Private Sub Command1_Click()
Dim solucion As Double
solucion = Me.ScriptControl1.Eval(Text1.Text)
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Buena Ivan

Publicado por P. J. (173 intervenciones) el 07/09/2007 19:40:57
Ta buena esa IVAN, no me la sabia, pero te generaria una dependencia no?
Bueno como sea te falto mostrar la solucion no mas ps pa que kede listo. XD XD
Ojala el que pregunto responda si es la solcion.

(Gracias ivan por el dato)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Buena Ivan

Publicado por layl (8 intervenciones) el 10/09/2007 14:39:00
Aplique la solucion planteada por IVAN y me arrojo el resultado esperado en una operacion sencilla aritmetica, lo quiero aplicar en un sistema de nomina donde pueda introducir conceptos a traves de formulas en forma literal y despues calcularlas. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar