2012年9月30日 星期日
100模擬 Problem 1:字串的處理
此問題為給定由「英文」、「數字」及「特定符號」組成「邏輯表示式」,判斷此邏輯表示式的敘述是否為真?
子題1: 在此子題中,邏輯表示式的內容只包括「true」、「false」、「==」、「!=」及「空格」。
其中「true」代表邏輯運算的「真」,而「false」代表「假」;另「==」代表邏輯運算的「是否相等」,而「!=」代表「是否不相等」。已知「==」運算,在前後比較值「同為true」或「同為false」時,其結果為「true」;但若比較值「一個true、一個false」時,其結果為「false」。另知「!=」運算前後比較值「同為true」或「同為false」時,其結果為「false」;但若比較值「一個true、一個false」時,其結果為「true」。在邏輯表示式中的空白均不具運算意義,選手可忽略之。輸入檔的資料,每行代表一個邏輯表示式,請選手判斷其邏輯運算的最後結果。若最後結果為真,該相對應輸出為「TRUE」;若為假,輸出「FALSE」。輸入的字串,不存在邏輯表示式語法的錯誤,選手可不必另外檢查之。本題的邏輯運算由多個子邏輯運算組成時,其運算應由左自右逐步檢查。
輸入說明:
共有4 行資料,每行有1 個邏輯表示式,每行最多120 個字。
輸出說明:
共4 行,分別列出輸入檔對應的邏輯表示式計算結果。若最後結果為真,該相對應輸出為
「TRUE」,反之輸出「FALSE」。(輸出均為大寫,選手請注意。)
輸入範例:【檔名:in-1-1.txt】
true==false!=false
true!=true==false==true==false
false==false!=true!=true!=flase==true
false!=false==true==false==true!=false==true!=false
輸出範例:【檔名:out-1-1.txt】
FALSE
FALSE
TRUE
TRUE
訂閱:
張貼留言 (Atom)
Private Sub Form_Load()
回覆刪除Me.Hide
Open App.Path & "\IN1-1.TXT" For Input As #1
Open App.Path & "\out.txt" For Output As #2
'== =And != = Xor
Do While Not EOF(1)
Input #1, x
For i = 1 To Len(x)
If Mid(x, i, 2) = "==" Then x = Replace(x, "==", "3")
If Mid(x, i, 2) = "!=" Then x = Replace(x, "!=", "4")
If Mid(x, i, 4) = "true" Then x = Replace(x, "true", "1")
If Mid(x, i, 5) = "false" Then x = Replace(x, "false", "0")
Next
If Len(x) > 1 Then
Do Until Len(x) = 1
i = 2
If Mid(x, i, 1) = "3" Then If Mid(x, i - 1, 1) = Mid(x, i + 1, 1) Then x = "1" & Mid(x, 4) Else: x = "0" & Mid(x, 4)
If Mid(x, i, 1) = "4" Then If Mid(x, i - 1, 1) = Mid(x, i + 1, 1) Then x = "0" & Mid(x, 4) Else: x = "1" & Mid(x, 4)
Loop
End If
If x = "0" Then Print #2, "FALSE"
If x = "1" Then Print #2, "TRUE"
Loop
Close
Close
End
End Sub
Private Sub Form_Load()
回覆刪除Me.Hide
Open App.Path & "\in-1-1.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Do While Not EOF(1)
Line Input #1, n
For i = 1 To Len(n)
If Mid(n, i, 2) = "==" Then n = Replace(n, "==", 3)
If Mid(n, i, 2) = "!=" Then n = Replace(n, "!=", 4)
If Mid(n, i, 4) = "true" Then n = Replace(n, "true", 1)
If Mid(n, i, 5) = "false" Then n = Replace(n, "false", 0)
Next i
Do Until Len(n) = 1
Select Case Left(n, 3)
Case "031"
n = Replace(n, "031", 0)
Case "030"
n = Replace(n, "030", 1)
Case "130"
n = Replace(n, "130", 0)
Case "131"
n = Replace(n, "131", 1)
Case "140"
n = Replace(n, "140", 1)
Case "141"
n = Replace(n, "141", 0)
Case "041"
n = Replace(n, "041", 1)
Case "040"
n = Replace(n, "040", 0)
End Select
Loop
If n = "0" Then Print #2, "FALSE" Else Print #2, "TRUE"
Loop
Close #2
Close #1
End
End Sub