不会堆,用土办法写了个表达式计算程序,支持三角涵数和括号
Public Function GcG(ByVal S As String) As String '主程序
Dim St As String
St = S
Dim i, I1, I2 As Integer
'把减号换成#号
For i = 1 To Len(St)
If Mid(St, i, 1) = "-" Then
St = Mid(St, 1, i - 1) + "#" + Mid(St, i + 1, Len(St) - i)
End If
Next
Do
If InStr(1, St, ")") = 0 Then
'如果计算式里没有括号就调用括号计算程序然后退出循环
St = Gc(St)
Exit Do
End If
I1 = 1 '初始化I1以防I1=0
I2 = InStr(1, St, ")") '得到后括号的位置
''得到前括号的位置
For i = I2 To 0 Step -1
If Mid(St, i, 1) = "(" Then
I1 = i
Exit For
End If
Next i
'计算括号内的表达式
St = Left(St, I1 - 1) + Gc(Mid(St, I1 + 1, I2 - I1 - 1)) + Right(St, Len(St) - I2)
Loop
GcG = St
End Function