2012年7月17日 星期二

子字串特徵的判斷-2

子題2(10%):是否文句中存在任何子字串,其為「合理」的「台北市」、「台中市」或「高雄市」身份證字號。
註:
(1) 身份證字號第1 碼為地區碼,「台北市」以「A」開頭、「台中市」以「B」開頭、「高雄市」以「E」開頭。

(2) 身份證字號的第2 碼為「性別」碼,其值應為「1」或「2」。
(3) 若將身份證字號的「地區碼」改為2 碼數字,其中「A」改為「10」、「B」改為「11」、「E」改為「14」,其後併入原身份證後9 碼數字,成為1 個新的11 位數字碼。將此數字碼由左至右分別乘以「1、9、8、7、6、5、4、3、2、1、1」,其相乘後的總和應可被10 整除。

輸入說明:
第1~3 行表示欲檢查之文句。
輸出說明:
若存在合理的身份證字號即輸出「有」,不存在即輸出「沒有」。
輸入範例:【檔名:in-3-2.txt】
His ID number is A120441768.
Her ID number is B272857734.
Their ID numbers are E286585485, E282467997, and E195445887.

輸出範例:【檔名:out-3-2.txt】

沒有

1 則留言:

  1. Private Sub Form_Load()
    Me.Hide
    Dim a As Boolean
    Dim ans As String
    Dim ans1 As Long
    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
    For i = 1 To Len(x)
    b = Mid(x, i, 2)
    ans = ""
    If b = "B1" Or b = "B2" Or b = "A1" Or b = "A2" Or b = "E1" Or b = "E2" Then
    ans = Mid(x, i, 10)
    If IsNumeric(Mid(ans, 2, 9)) = True Then
    'IsNumeric函數=檢查是不是數字
    ans1 = 0
    a = False
    If Mid(ans, 1, 1) = "A" Then ans1 = ans1 + (1 * 1) + (0 * 9)
    If Mid(ans, 1, 1) = "B" Then ans1 = ans1 + (1 * 1) + (1 * 9)
    If Mid(ans, 1, 1) = "E" Then ans1 = ans1 + (1 * 1) + (4 * 9)
    ans1 = ans1 + Val(Mid(ans, 2, 1)) * 8
    ans1 = ans1 + Val(Mid(ans, 3, 1)) * 7
    ans1 = ans1 + Val(Mid(ans, 4, 1)) * 6
    ans1 = ans1 + Val(Mid(ans, 5, 1)) * 5
    ans1 = ans1 + Val(Mid(ans, 6, 1)) * 4
    ans1 = ans1 + Val(Mid(ans, 7, 1)) * 3
    ans1 = ans1 + Val(Mid(ans, 8, 1)) * 2
    ans1 = ans1 + Val(Mid(ans, 9, 1)) * 1
    ans1 = ans1 + Val(Mid(ans, 10, 1)) * 1
    If ans1 Mod 10 = 0 Then a = True
    End If
    End If
    Next
    If a = True Then Print #2, "有" Else Print #2, "沒有"
    Loop
    Close
    Close
    End
    End Sub

    回覆刪除