Problem6:測謊機(11%)
小明請小華猜出他心理想的一個數字,這個數字為[1, 100]間的整數。猜測的規則為:每
一回小華猜測一個數字,小明則回應小華猜的太高(too high),太低(too low),或是猜中(right
on),猜中後立即結束遊戲。因為過程中小明可能會說謊,你必須寫一個程式,在每次結束之
後,驗証小明他的回應是否都正確。
輸入說明:
輸入中含有多次遊戲的記錄。在每一次遊戲中會包含許多次的猜測及回應的過程。每一
次遊戲的最後都必須猜中才能結束。在最後一組遊戲後,由僅含有0 的一列代表輸入結束。
輸出說明:
針對每一次的遊戲,程式以一行輸出小明是否有說謊。如果這次遊戲有說謊則輸出0,
沒有說謊則輸出1。
輸入範例:
5
too high
3
too high
1
too low
2
right on
33
too low
34
too high
32
right on
0
輸出範例:
1
0
Dim max&, min&
回覆刪除Private Sub Form_Load()
Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Do While Not EOF(1)
Input #1, n
If n <> 0 Then
Line Input #1, m
Call A1(n, m)
End If
Loop
Close
Close
End
End Sub
Sub A1(a, b)
Select Case b
Case "too high": max = Val(a)
Case "too low": min = Val(a)
Case "right on"
If Val(a) > max Or Val(a) < min Then Print #2, "0" Else Print #2, "1"
max = 0: min = 0
End Select
End Sub
Private Sub Form_Load()
回覆刪除Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
ansL = 0: ansR = 0
Do While Not EOF(1)
Input #1, G
If G = 0 Then Exit Do
Line Input #1, x
Select Case x
Case "too high": ansR = G
Case "too low": ansL = G
Case "right on"
If ansL < G And G < ansR Then Print #2, 1 Else Print #2, 0
ansL = 0: ansR = 0
End Select
Loop
Close #2
Close #1
End
End Sub