'您可以使用下面提供给您的功能来做到这一点!
'首先定义两个结构体和Plus,并将这两个定义放在代码段的开头
类型
SA
价值为
末端类型
加号型
SA
价值为
末端类型
'下面是实现这个功能的函数的定义,比较长。
(ByVal As ) As
Dim Pa() As 、 As 、 Ps() As 加、 As
调暗 str0 As
'用括号分解表达式:Begin-----/*
暗淡 As 、 As 、 i As 、 j As 、 k As 、 str1 As 、 str2 As 、 As
暗淡如,如
=Len()
对于 i = 1 至
如果 Mid(, i, 1) = "(" 则 = + 1
下一个
=
ReDim Pa(( / 10 + 1) * 10)
对于 i = 1 至
如果 < 1 则退出
对于 j = 1 至
如果 Mid(, j, 1) = ")" 那么
str1 = 中(, 1, j - 1)
退出对于
万一
下一个
= 长度(str1)
对于 k = 1 至
如果 Mid(str1, + 1 - k, 1) = "(" 那么
Pa(i).s = Mid(str1, + 2 - k)
退出对于
万一
下一个
= Mid(, 1, - k) & Chr(128) & CStr(i) & Mid(, j + 1)
=Len()
下一个
Pa(0).s =
'*/ - - -结尾
'进一步按加减号分解:Begin-----/*
暗淡如,如
对于 i = 0 至
k = 0
对于 j = 1 至 Len(Pa(i).s)
str1 = Mid(Pa(i).s, j, 1)
如果 str1 = "+" 或 str1 = "-" 则 k = k + 1
下一个
如果 k > 则 = k
下一个
重新调暗 Ps(, )
对于 i = 0 至
= Pa(i).s: n = 0: str2 = ""
做
如果 Len() = 0 则退出
对于 j = 1 到 Len()
str1 = 中(, j, 1)
如果 str1 = "+" 或 str1 = "-" 那么
Ps(i, n).s = str2 & Mid(, 1, j - 1)
n = n + 1
str2 = IIf(str1 = "-", str1, "")
= 中(, j + 1)
退出对于
万一
如果 j = Len() 那么
Ps(i, n).s = str2 & : j = 0
退出对于
万一
下一个
循环直到 j = 0
下一个
'*/ - - -结尾
'计算多个简单表达式最终分数值的总和,即表达式的值
暗淡总 As , 值 As
对于 i = 1 至 + 1
如果 i = + 1 则 i = 0
总计 = 0
对于 j = 0 至
= Ps(i, j).s:值 = 0
暗淡最后的 As, As
= Len(): 最后 = 0: = ""
对于 k = 1 至
str0 = 中(, k, 1)
如果 InStr("*/^", str0) > 0 或 k = 那么
如果 k = 则 k = k + 1
str1 = Mid(,lasti + 1,k - 1 -lasti)
昏暗符号 As,As
如果 Mid(str1, 1, 1) = "-" 那么
符号=-1
str1 = 中(str1, 2)
别的
符号=1
万一
n = InStr(1, "/sin" & Chr(128) & "/cos" & Chr(128) & "/tan" & Chr(128) & "/abs" & Chr(128) & "/atn" & Chr(128) & "/exp" & Chr(128) & "/int" & Chr(128) & "/fix" & Chr(128) & "/sgn" & Chr(128) & "/sqr" & Chr(128) & "/", "/" & Mid(str1, 1, 4) & "/")
如果 n > 0 则
= ((n + 4) / 5, Sin(Pa(Val(Mid(str1, 5))).value), Cos(Pa(Val(Mid(str1, 5))).value), Tan(Pa( Val(Mid(str1, 5))).value)、Abs(Pa(Val(Mid(str1, 5))).value)、Atn(Pa(Val(Mid(str1, 5)))).value) , Exp(Pa(Val(Mid(str1, 5))).value), Int(Pa(Val(Mid(str1, 5))).value), Fix(Pa(Val(Mid(str1, 5))) ) .value), Sgn(Pa(Val(Mid(str1, 5))).value), Sqr(Pa(Val(Mid(str1, 5))).value))
别的
n = InStr(1, "/lg" & Chr(128) & "/ln" & Chr(128) & "/", Mid(str1, 1, 3))
如果 n > 0 则
= ((n + 3) / 4, Log(Pa(Val(Mid(str1, 4))).value) / Log(10), Log(Pa(Val(Mid(str1, 4)))).value ) )
别的
如果 Mid(str1, 1, 1) = Chr(128) 那么
= Pa(Val(Mid(str1, 2))).value
右(str1,1)=“!” 然后
如果 Val(str1) = 0 那么
= 1
别的
= 1
对于 n = 1 至 Val(str1)
= *n
下一个
万一
别的
= 瓦尔(str1)
万一
万一
万一
= * 符号
案件
案件 ””
值=
案件 ”*”
值=值*
案件 ”/”
值=值/
案例“^”
值=值^
结尾
拉斯蒂 = k: = str0
万一
下一个
Ps(i, j).value = 值
总计 = 总计 + Ps(i, j).value
下一个
Pa(i).值 = 总计
如果 i = 0 则退出
下一个
= Pa(0).值
结尾
'好的,函数的定义到此结束
'使用示例:
'A=“5+5+5”
'打印(A)
'其他说明:该函数支持sin、cos、tan等多种数学函数,如:
'打印(“罪(1)”)
'注意后面的括号
'该函数支持运算符+-*/^!,以及括号,^是幂,其优先级与*/相同。 这是使用该功能时需要注意的地方; ! 是阶乘
‘你亲自尝试一下就知道是怎么回事了!