2012年9月13日 星期四
100正式Problem 1:字串的處理
此問題為給定由「整數數字」、「+」、「-」及「特定符號」組成「邏輯表示式」,判斷此邏輯表示式的敘述是否為真?
在此子題中,邏輯表示式的內容只包括「整數數字」、「+」、「-」、「==」及「空格」。其中「+」代表數字運算的「加法」,而「-」代表「減法」;另「==」代表邏輯運算的「是否相等」。
已知「==」運算,在前後比較值「相同」時,其結果為「TRUE」;若「不同」時,其結果為
「FALSE」。在邏輯表示式中的空白均不具運算意義,選手可忽略之。輸入檔的資料,每行代表一個邏輯表示式,請選手判斷其邏輯運算的最後結果。若最後結果為真,該相對應輸出為「TRUE」;若為假,輸出「FALSE」。輸入的字串,不存在邏輯表示式語法的錯誤,選手可不必另外檢查之。其運算的優先順序是「先算加、減法」,「最後才比是否相等」。
輸入說明:
每個輸入檔案有 4 行資料,每行有1 個邏輯表示式,每行最多120 個字。「整數數字」介於0
到100 之間,數字運算結果介於正負1000 之間。
輸出說明:
依序列出輸入檔對應的邏輯表示式檢查結果。若輸入行檢查結果為真,該行相對應輸出為
「TRUE」,反之輸出「FALSE」。(輸出均為大寫,選手請注意。)
輸入檔案 1:【檔名:in1.txt】
25+4-33+22-2==16
15+30==13-58
20+10-50==40-60
20==10+10+10+10-30
輸入檔案 2:【檔名:in2.txt】
24-4+10==10-40
33+5-10==43-5-5-3-2
10-20-30==30-40-30
30-40+10==10-20+30-20
輸出範例:【檔名:out.txt】
TRUE
FALSE
TRUE
FALSE
FALSE
TRUE
TRUE
TRUE
訂閱:
張貼留言 (Atom)
Dim ans, ans1 As Integer
回覆刪除Dim x
Private Sub Form_Load()
Me.Hide
Open App.Path & "\in1.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Open App.Path & "\in2.txt" For Input As #3
Do While Not EOF(1)
Line Input #1, x
Call abc
Loop
Print #2,
Do While Not EOF(3)
Line Input #3, x
Call abc
Loop
Close
Close
Close
End
End Sub
Sub abc()
x = Replace(x, "+", " a ")
x = Replace(x, "-", " b ")
x = Replace(x, "==", " c ")
d = Split(x, " ")
For i = 0 To UBound(d)
If d(i) = "c" Then f = i: Exit For
Next
ans = d(0)
For i = 0 To (f - 1)
If f - 1 = 0 Then ans = d(0): Exit For
Select Case d(i)
Case "a"
ans = ans + Val(d(i + 1))
Case "b"
ans = ans - Val(d(i + 1))
End Select
Next
ans1 = d(f + 1)
For i = (f + 1) To UBound(d)
If f + 1 = UBound(d) Then ans1 = d(f + 1): Exit For
Select Case d(i)
Case "a"
ans1 = ans1 + Val(d(i + 1))
Case "b"
ans1 = ans1 - Val(d(i + 1))
End Select
Next
If ans = ans1 Then Print #2, "TRUE" Else: Print #2, "FALSE"
End Sub