作者TrueFeeling (昨日之死)
看板Visual_Basic
標題Re: [VB6 ] 計算機
時間Fri Jun 10 19:45:34 2005
不好意思,再問程式碼部分
※ 引述《fumizuki (小獅子)》之銘言:
: ※ 引述《fumizuki (小獅子)》之銘言:
: : 是打算輸入運算式後按enter再算出值?
: : 還是像一般計算機一樣按下了加減乘除等於就會算出值?
: 哇哈!這種運算式真不好寫...好不容易才試了出來...
: 用遞迴法寫的,寫了一長串,看起來頗複雜的...~.~
: Private Sub Command1_Click(Index As Integer)
: Text1.Text = Text1.Text & Index
: End Sub
: Private Sub Command2_Click(Index As Integer)
: Text1.Text = Text1.Text & Command2(Index).Caption
: End Sub
: Private Sub Command3_Click()
: Label1.Caption = Eval(Text1.Text)
: End Sub
: Function Eval(s As String)
方程式名:Eval ?
方程式參數s設為字串?
: Dim p As Integer, op1 As String, op2 As String, o As String
: Static c As Integer: c = c + 1
: If c = 1 Then s = Replace(s, " ", "")
請問上面這段,c的作用是?
: p = InStr(s, "+")
: If p > 0 Then GoSub SplitProc: Eval = Eval(op1) + Eval(op2): GoTo EndProc
我猜的意思是:
If p > 0 -->如果有+號的話,然後執行SplitProc,不過後面就不知道為什麼
: If s Like "-*" Then p = 2 Else p = 1
我猜的意思是:
如果字串s裡面是-號後面是一串字元的話,然後後面還是看不懂
: p = InStr(p, s, "-")
: If p > 0 Then
如果有減號的話,然後
: op1 = Mid(s, p - 1, 1)
op1=字串中,減號的前一個字元
: If op1 = "+" Then
這邊看不懂,為什麼op1剛剛代表減號,現在為什麼代表加號
: p = p - 1: GoSub SplitProc: Eval = Eval(op1) + Eval(op2): GoTo EndProc
p = p-1 ==>看不懂,後面也看不懂
: ElseIf op1 = "-" Then
: p = p - 1: GoSub SplitProc: Eval = Eval(op1) - Eval(op2): GoTo EndProc
: ElseIf op1 = "*" Then
: p = p - 1: GoSub SplitProc: Eval = Eval(op1) * Eval(op2): GoTo EndProc
: ElseIf op1 = "/" Then
: p = p - 1: GoSub SplitProc: Eval = Eval(op1) / Eval(op2): GoTo EndProc
: Else
: GoSub SplitProc: Eval = Eval(op1) + Eval("-" & op2): GoTo EndProc
: End If
: End If
: p = InStr(s, "*")
: If p > 0 Then GoSub SplitProc: Eval = Eval(op1) * Eval(op2): GoTo EndProc
如果字串中有*號,.....
: p = InStr(s, "/")
: If p > 0 Then GoSub SplitProc: Eval = Eval(op1) / Eval(op2): GoTo EndProc
如果字串中有/號....
: Eval = Val(s)
這裡傳回的模式也看不懂
: EndProc:
: c = c - 1: Exit Function
c = c - 1的作用是?
: SplitProc:
: op1 = Left(s, p - 1): op2 = Mid(s, p + 1): Return
將字串拆成2份(以p的位置為分界點)
第1份是p的左邊
第2份是p的右邊
: End Function
--
少年讀書,如隙中窺月;
中年讀書,如庭中望月;
老年讀書,如臺上玩月。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.162.90.149