此問題為給定某些英文文句,其內容只有「英文、數字、空白及標點符號」,請選手判斷此文
句是否符合某些檢查條件?
子題1(10%):是否文句中存在任何子字串,其以「任一數字」開頭,「任一數字」結尾,中
間存在1 個至3 個大寫字母。
輸入說明:
第1~3 行表示欲檢查之3 句英文文句。
輸出說明:
第1~3 行分別對應第1~3 句檢查文句,若存在符合條件之子字串即輸出「有」,不存在即輸出
「沒有」。
輸入範例:【檔名:in-3-1.txt】
Tom Lin’s employee number is A123BSC45.
The price is 45 US dollars.
The machine code is 65K2.
輸出範例:【檔名:out-3-1.txt】
有
沒有
有
了解題目要求就很簡單。
回覆刪除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)
Line Input #1, x
st = 0
en = 0
For i = 1 To Len(x)
If IsNumeric(Mid(x, i, 1)) = True And st = 0 Then
st = i
Else
If IsNumeric(Mid(x, i, 1)) = True Then en = i
End If
Next i
ans = 0
For i = (st + 1) To (en - 1)
A = Mid(x, i, 1)
If A >= "A" And A <= "Z" Then ans = ans + 1
Next i
If ans = 0 Then Print #2, "沒有" Else Print #2, "有"
Loop
Close #2
Close #1
End
End Sub
佑好,
回覆刪除這題錯很大吧?
前後兩個數字,有很多組合吧,你每行只取1組來驗証。
兩個數字中的英文字數是有限制的吧,你只是看有或是沒有,就定案了,這不行吧。
小心看題目。
另外,題目中「中間存在1 個至3 個大寫字母。」這句話,可能要問一下監考老師,兩個數字中有1到3個大寫字母外,有其它的數字或小寫字,算嗎?
回覆刪除也就是說是不是「中間『只』存在1 個至3 個大寫字母。」
題意不清的時候,要注意。
熊掌好,
回覆刪除我只有抓第一個出現和最後一個出現。
且要1<=個<=3
那有一組有符合就可以跳出摟!!?
佑好,
回覆刪除輸入:
The machine code is 65a2 and something like ABCD2.
The machine code is 65a2 or ABC2.
這樣子是算有還是沒有呢?
依你的程式是算有,但是,似乎不符合題義吧。
我看不太懂題目
回覆刪除是否文句中存在任何子字串,其以「任一數字」開頭,「任一數字」結尾
如果是"數字" 那範例一好像也沒有
只有範例3的 "65K2" 符合而已
arro好,
回覆刪除範例1中有「3BSC4」也符合啊。
Dim X As String
回覆刪除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)
Line Input #1, X
List1.Clear
H = False
For i = 1 To Len(X)
If IsNumeric(Mid(X, i, 1)) = True Then List1.AddItem i
Next i
For i = 0 To (List1.ListCount - 2)
For j = i + 1 To (List1.ListCount - 1)
If Check(Val(List1.List(i)), Val(List1.List(j))) = True Then H = True: Exit For
Next j
Next i
If H = True Then Print #2, "有" Else Print #2, "沒有"
Loop
Close #2
Close #1
End
End Sub
Function Check(A, B) '檢查A~B內是否符合
ans = 0
For i = A + 1 To B - 1
C = Mid(X, i, 1)
If C >= "A" And C <= "Z" Then ans = ans + 1
Next i
If 1 <= ans And ans <= 3 Then Check = True Else Check = False
End Function
in.txt
回覆刪除The machine code is 65a2 and something like ABCD2.
The machine code is 65a2 or ABC2.
out.txt
沒有
有
佑好,
回覆刪除好吧,如果題意是只管大寫字,小寫字多少都不管的話,
你的程式正確。