2011年8月1日 星期一

Find the Telephone

內容 : 正體->简体 
有些地方會用對應的字母來代替數字使得電話號碼更好記。如此一來 MY LOVE 就代表 69 5683。這不是萬靈丹,因為有的電話號碼並不能構成一個字或片語,而且 1 和 0 沒有對應的字母。
請讀入一個字串並依據下表轉成電話號碼。字串由大寫字母 (A-Z)、連字號(-) 和數字 1 和 0 所組成。

字母數字
ABC2
DEF3
GHI4
JKL5
MNO6
PQRS7
TUV8
WXYZ9
輸入說明 :
輸入含有若干字串。每個字串單獨在一行,有 C 個字元,1 ≤ C ≤ 30 。輸入以 EOF 作為結束。
輸出說明 :
對於每個字串,請輸出相對應的電話號碼。
範例輸入 :help
1-HOME-SWEET-HOME 
MY-MISERABLE-JOB
範例輸出 :
1-4663-79338-4663 
69-647372253-562

5 則留言:

  1. YO~假日去饑餓30。
    :)

    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, N
    L = Len(N)
    ans = ""
    For i = 1 To L
    A = Mid(N, i, 1)
    Select Case A
    Case "A", "B", "C": ans = ans & 2
    Case "D", "E", "F": ans = ans & 3
    Case "G", "H", "I": ans = ans & 4
    Case "J", "K", "L": ans = ans & 5
    Case "M", "N", "O": ans = ans & 6
    Case "P", "Q", "R", "S": ans = ans & 7
    Case "T", "U", "V": ans = ans & 8
    Case "W", "X", "Y", "Z": ans = ans & 9
    Case Else: ans = ans & A
    End Select
    Next i
    Print #2, ans
    Loop
    Close #2
    Close #1
    End
    End Sub

    回覆刪除
  2. 佑好,
    夠暴力,夠簡單,正確。
    (文雅一點的,可以用ascii碼,再去整除3,再去加2,再...)

    回覆刪除
  3. 熊掌好,

    有想到:D

    Case "W" To "Z": ans = ans & 9

    回覆刪除
  4. 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, n


    Dim a, d, g, j, m, p, t, w

    a = Split("@ A B C @")
    d = Split("@ D E F @")
    g = Split("@ G H I @")
    j = Split("@ J K L @")
    m = Split("@ M N O @")
    p = Split("@ P Q R S")
    t = Split("@ T U V @")
    w = Split("@ W X Y Z")

    For i = 1 To 4
    n = Replace(n, a(i), 2)
    n = Replace(n, d(i), 3)
    n = Replace(n, g(i), 4)
    n = Replace(n, j(i), 5)
    n = Replace(n, m(i), 6)
    n = Replace(n, p(i), 7)
    n = Replace(n, t(i), 8)
    n = Replace(n, w(i), 9)
    Next

    Print #2, n

    Loop


    Close
    Close

    End
    End Sub



    貌似更暴力的不用思考寫法

    回覆刪除
  5. arro好,
    程式正確。
    (真要直接換,就用兩個陣列a(26),b(26)一個給字母,一個給數字)

    回覆刪除