2012年5月21日 星期一

解密

有一訊息如下"The final contest for getting right"
經放置於8*10的陣列中為
The*fina
l*contes
t*for*ge
tting*ri
ght*****
此列之後的資料皆為空白
加密後的資料為"Tlttgh**thecfit*oon*fnrg*it***negr*asei*"
寫一程式可以將加密過的訊息解密(訊息長度不超過80個字元)

4 則留言:

  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
    Line Input #1, x
    x = Replace(x, " ", "*")
    If Len(x) Mod 8 <> 0 Then
    For i = 1 To 8 - (Len(x) Mod 8)
    x = x & "*"
    Next
    End If
    For j = 1 To Len(x)
    ans = ans & Mid(x, j, 1)
    If Len(ans) = 8 Then
    Print #2, ans
    ans = ""
    End If
    Next
    Close
    Close
    End
    End Sub

    回覆刪除
  2. 解密的意思應該是輸出"The final contest for getting right"吧

    回覆刪除
  3. Private Sub Form_Load()
    Dim ans(10) As String
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Input #1, x
    y = 1
    For i = 1 To 8
    For j = 1 To Len(x) \ 8
    If Mid(x, y, 1) <> "*" Then
    ans(j) = ans(j) & Mid(x, y, 1)
    Else
    ans(j) = ans(j) & " "
    End If
    y = y + 1
    Next
    Next
    For i = 1 To Len(x) \ 8
    Print #2, ans(i);
    Next
    Close
    Close
    End
    End Sub

    回覆刪除
  4. 小冰好,
    學長arro說的是對的。
    你的程式也是對的。
    那個判斷星號*的if是沒必要的,像前一次做的,用replace一次,就完成了。

    回覆刪除