2011年7月29日 星期五

子字串特徵的判斷-1(99模擬)

此問題為給定某些英文文句,其內容只有「英文、數字、空白及標點符號」,請選手判斷此文
句是否符合某些檢查條件?
子題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】

沒有

10 則留言:

  1. 了解題目要求就很簡單。

    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

    回覆刪除
  2. 佑好,
    這題錯很大吧?
    前後兩個數字,有很多組合吧,你每行只取1組來驗証。
    兩個數字中的英文字數是有限制的吧,你只是看有或是沒有,就定案了,這不行吧。
    小心看題目。

    回覆刪除
  3. 另外,題目中「中間存在1 個至3 個大寫字母。」這句話,可能要問一下監考老師,兩個數字中有1到3個大寫字母外,有其它的數字或小寫字,算嗎?
    也就是說是不是「中間『只』存在1 個至3 個大寫字母。」
    題意不清的時候,要注意。

    回覆刪除
  4. 熊掌好,

    我只有抓第一個出現和最後一個出現。
    且要1<=個<=3
    那有一組有符合就可以跳出摟!!?

    回覆刪除
  5. 佑好,
    輸入:
    The machine code is 65a2 and something like ABCD2.
    The machine code is 65a2 or ABC2.
    這樣子是算有還是沒有呢?
    依你的程式是算有,但是,似乎不符合題義吧。

    回覆刪除
  6. 我看不太懂題目

    是否文句中存在任何子字串,其以「任一數字」開頭,「任一數字」結尾


    如果是"數字" 那範例一好像也沒有
    只有範例3的 "65K2" 符合而已

    回覆刪除
  7. arro好,
    範例1中有「3BSC4」也符合啊。

    回覆刪除
  8. 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

    回覆刪除
  9. in.txt
    The machine code is 65a2 and something like ABCD2.
    The machine code is 65a2 or ABC2.

    out.txt
    沒有

    回覆刪除
  10. 佑好,
    好吧,如果題意是只管大寫字,小寫字多少都不管的話,
    你的程式正確。

    回覆刪除