README.md
December 4, 2022 ยท View on GitHub
Description
Evaluate any Mathematical Equation
like: Evaluate("(5+3)*2")
More Info
| Submitted On | |
| By | Lefteris Eleftheriades |
| Level | Intermediate |
| User Rating | 4.8 (24 globes from 5 users) |
| Compatibility | VB 5.0, VB 6.0 |
| Category | Math/ Dates |
| World | Visual Basic |
| Archive File |
Source Code
Function Evaluate(ByVal Equation As String)
Dim i&, P%, Si&
Equation = Replace(Replace(Equation, ",", "."), "--", "")
'Parenthesis Begins with outermost
For i = 1 To Len(Equation)
If Mid(Equation, i, 1) = "(" Then
P = P + 1
If P = 1 Then Si = i
End If
If Mid(Equation, i, 1) = ")" Then
If P = 1 Then
Evaluate = Evaluate(Mid(Equation, 1, Si - 1) & Evaluate(Mid(Equation, Si + 1, i - 1 - Si)) & Mid(Equation, i + 1))
Exit Function
End If
P = P - 1
End If
Next
'Addition / Substruction
For i = Len(Equation) To 1 Step -1
If Mid(Equation, i, 1) = "+" Then
If i > 1 Then
If Mid(Equation, i - 1, 1) <> "*" And Mid(Equation, i - 1, 1) <> "/" Then
Evaluate = Evaluate(Mid(Equation, 1, i - 1)) + Evaluate(Mid(Equation, i + 1))
Exit Function
End If
Else
Evaluate = Evaluate(Mid(Equation, 1, i - 1)) + Evaluate(Mid(Equation, i + 1))
Exit Function
End If
End If
If Mid(Equation, i, 1) = "-" Then
If i > 1 Then
If Mid(Equation, i - 1, 1) <> "*" And Mid(Equation, i - 1, 1) <> "/" Then
Evaluate = Evaluate(Mid(Equation, 1, i - 1)) - Evaluate(Mid(Equation, i + 1))
Exit Function
End If
Else
Evaluate = Evaluate(Mid(Equation, 1, i - 1)) - Evaluate(Mid(Equation, i + 1))
Exit Function
End If
End If
Next
'Multiplication / Division
For i = Len(Equation) To 1 Step -1
If Mid(Equation, i, 1) = "*" Then
Evaluate = Evaluate(Mid(Equation, 1, i - 1)) * Evaluate(Mid(Equation, i + 1))
Exit Function
End If
If Mid(Equation, i, 1) = "/" Then
Evaluate = Evaluate(Mid(Equation, 1, i - 1)) / Evaluate(Mid(Equation, i + 1))
Exit Function
End If
Next
Evaluate = Val(Equation)
End Function