我一直在努力完成这项任务已经有一段时间了,我决定需要一些帮助.我必须将莫尔斯代码转换为英语并将所有可能的翻译输出到列表框(甚至是乱码).搜索已经出现了很多不同的线程,但没有任何用处,因为他们要么不是这种语言,要么是过时的(VB6)代码.作业说明:
使用典型的点(.)和短划线( - )作为代码的书面表示,摩尔斯电码中的单词...... --- ..- ....-可能是索菲亚或尤金尼亚名称的编码在哪里分解字母:... | --- | ..-.| .. | .- Sofia.| ..- | - .|.| - .| .. | .- Eugenia
管道只是为了显示字符串是如何分解的.
我尝试过"For Each"循环,"For"循环,写入文本文件和回读,将字符串拆分1到4个字符,Select Case方法以及上面的所有组合我都能想到没有运气.我的For循环导致一组26个所有内容,但没有单词,只有一系列空格,然后是一个字母26次,然后是那个字母两次26次,依此类推.文本文件和将字符串拆分一个或两个字符会导致输出E,A或T,每个都在其自己的行上乘以字符串中的迭代次数,并将字符串拆分为三个或四个字符会导致相同或如果字符串不均匀分割,则会出现IndexOutOfRange错误.我回到了最接近我编码实际工作的东西,但输出结果只是英文字母输出.
我这次使用的是Linq查询,并且非常感谢帮助找出如何正确地遍历字符串以完成任务所要求的内容.
这是我到目前为止的代码:
Imports System.IO
Imports System.Text
Public Class Form1
Dim MorseCode() = File.ReadAllLines("MorseCode2.txt")
Private Sub input_TextChanged(sender As Object, e As EventArgs) Handles input.TextChanged
End Sub
Private Sub output_SelectedIndexChanged(sender As Object, e As EventArgs) Handles output.SelectedIndexChanged
End Sub
Private Sub help_Click(sender As Object, e As EventArgs) Handles help.Click
'Displays the Morse Code and English letter equivalents
Process.Start("MorseCode.txt")
End Sub
Private Sub translate_Click(sender As Object, e As EventArgs) Handles translate.Click
Dim userText As String = input.Text
Dim temp As String
Dim word As String
'Search the users entry for possible translations
Dim query = From line In MorseCode
Let data = line.split(","c)
Let engLtr = data(0)
Let code = data(1)
Select engLtr, code
For Each code In query
If userText.Contains(code.code) Then
temp = code.engLtr
word = String.Concat(temp + temp)
output.Items.Add(word)
End If
Next
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
我很确定我的错误是在.Concat调用中,但我尝试过没有解决问题.
感谢您给我的任何指示!
编辑以添加伪代码:
1 - 读取输入字符串
2 - 将字符串分解为单个元素每个符号1个,匹配符号到字母,发送到temp,将字符串连接成单词,将每个单词输出到列表框
3 - 重读字符串分为两个符号,每个符号"......"
4 - "......"每个"......"三个符号
5 - "......"每个"......"四个符号
我尝试过"For Each"循环,"For"循环,写入文本文件和回读,将字符串拆分1到4个字符,Select Case方法以及上面的所有组合我都能想到没有运气.
这就像是说"我想准备一顿美味的饭,我尝试过糖,肉,牛奶,盐,燃气灶,电炉,清洁厨房,煎锅,叉子以及上面所有的组合我可以想想没有运气."
你明显缺少的是食谱.在计算机科学术语中,这是一种算法.我建议您执行以下操作:
离开电脑.拿一张纸和一支铅笔.
尝试手动解决问题.举个例子...---..-....-,试着找出所有可能的含义.
完成后,请考虑一下如何解决问题.你做了什么来确保你不会错过任何可能的含义?试着用简单的英语写下你采取的步骤.那是你的算法.
现在,您可以开始将算法转换为您选择的编程语言.
如果您在执行任何这些步骤时遇到问题,我建议您开始一个新问题,并具体询问这一点.不要忘记提及您尝试过的方法以及您遇到的问题.