将每个字符转换为莫尔斯电码字符串?

喜玛星

成员
已加入
2019年3月16日
留言内容
10
编程经验
Beginner
用户输入一个单词并将其转换为Morzes代码!
如何将每个字符转换为字符串?
就像我写的那样-" Programm "
它会说" .--. .-. " and so on?
谁能帮我?
 

跳伞者

工作人员
已加入
2019年4月6日
留言内容
2,612
地点
弗吉尼亚州切萨皮克
编程经验
10+
是的,如果您向我们展示您目前所拥有的,并告诉我们您遇到了什么问题,我们可以为您提供帮助。我们不是代码编写服务。我们不提供这种帮助。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,567
地点
悉尼,澳大利亚
编程经验
10+
作为指导,我可能会先从 字典<char, string> 提供字母到莫尔斯电码的映射。然后,您可以循环浏览 细绳 直接,因为它是一个 IEnumerable<char>或致电 ToCharArray 在上面。使用该信息后,如果遇到任何实际问题,可以向我们显示您的代码。如果您尚未编写任何代码,那么您还没有遇到任何问题。
 

喜玛星

成员
已加入
2019年3月16日
留言内容
10
编程经验
Beginner
作为指导,我可能会先从 字典<char, string> 提供字母到莫尔斯电码的映射。然后,您可以循环浏览 细绳 直接,因为它是一个 IEnumerable<char>或致电 ToCharArray 在上面。使用该信息后,如果遇到任何实际问题,可以向我们显示您的代码。如果您尚未编写任何代码,那么您还没有遇到任何问题。

我想出了这段代码,但是我只能输入一个字符并且只能显示一个字符,我需要一个完整的单词,例如-"HELLO"
我该怎么办!!

C#:
    Dictionary<char, string> Morze = new Dictionary<char, string>()
             {
                {'A',".- "},
                {'B', "-... "},
                {'C',"-.-. "},
                {'D'," -.. "},
                {'E',"."},
                {'F',"..-. "},
                {'G',"--. "},
                {'H',"...."},
                {'I',".."},
                {'J',".---"},
                {'K',"-.-"},
                {'L',".-.."},
                {'M',"--"},
                {'N',"-."},
                {'O',"---"},
                {'P',".--."},
                {'Q',"--.-"},
                {'R',".-."},
                {'S',"..."},
                {'T',"-"},
                {'U',"..-"},
                {'V',"...-"},
                {'W',".--"},
                {'X',"-..-"},
                {'Y',"-.--"},
                {'Z',"--.."},
                {'1',".----"},
                {'2',"..--- "},
                {'3',"...-- " },
                {'4',"....- " },
                {'5',"..... " },
                {'6',"-.... " },
                {'7',"--... " },
                {'8',"---.. " },
                {'9',"----. " },
                {'0',"----- " },
                {'/',"-..-. "},
                {'+',".-.-. " },
                {'=',"-...-" },
                {'.',".-.-.-" },
                {',',"--..--" },
                {'?',"..--.." },
                {'(',"-.--." },
                {')',"-.--.-" },
                {'-',"-....-" },
                {'"',".-..-." },
                {'_',"..--.-" },
                {':',"---..." },
                {';',"-.-.-." },
                {'$',"...-..-"}
             };
       
            Console.Write("Input a name: ");
            string name = Console.ReadLine();
            Console.WriteLine(Morze[Convert.ToChar(name)]);
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,567
地点
悉尼,澳大利亚
编程经验
10+
好像您阅读了 字典 部分,实施该部分,然后忽略其余部分。返回并再次阅读我以前的文章,这次使用提供的其余信息。
 

喜玛星

成员
已加入
2019年3月16日
留言内容
10
编程经验
Beginner
好像您阅读了 字典 部分,实施该部分,然后忽略其余部分。返回并再次阅读我以前的文章,这次使用提供的其余信息。
我不明白 IEnumerable<char>或致电 ToCharArray works is this right?

 
已加入
2011年4月23日
留言内容
177
地点
密歇根州兰辛;美国
编程经验
10+

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,567
地点
悉尼,澳大利亚
编程经验
10+
我专门说过,您可以遍历 细绳 本身,或者你可以打电话 ToCharArray。你也不知道数组是如何工作的吗?循环的重点是重复执行操作。你有多个 烧焦s 在那里面 细绳 或由此创建的数组,听起来像是完美的搭配。

编程并非凭空存在的。代码只是算法的一种实现。在尝试编写代码之前,您应该已经知道该算法是什么。如果您必须使用笔和纸来完成此操作,您将如何做呢?这就是您在代码中执行此操作的方式。考虑一下该过程,如果需要,将其写下来,然后编写代码以实现这些步骤。根据您使用的字词,它实际上已经是代码,例如"对于输入中的每个字符,找到相应的摩尔斯电码并将其添加到输出中"。如果我没记错的话,C#有 前言 循环。碰巧的是,C# 前言 通过枚举实现对象的对象中的项目来专门工作 IEnumerable 界面。一切似乎都融为一体。
 

羊皮

知名会员
已加入
2018年9月5日
留言内容
1,982
编程经验
10+
@himlastar 在csharpforums上时的提示。我们了解您可能不熟悉该语言,因此在帮助像您这样的人时,我们都会对此设置例外。但是,当该论坛上的某人用斜体表示某项内容时(就像我们所有人在尝试指出某些具体内容或提供提示时一样,我们都这样做。)通常意味着您要么 搜索网际网路 或通常 MSDN : 搜索 对于任何 斜体 or highlighted text is. Upon doing so, it should be very clear to you what you're being advised to do once you follow the directions you are given on your topic and in the documentation you are looking into. Plus, almost all MSDN pages, comes with very helpful code examples, including descriptive and very elaborate explanations describing the usage for whatever it is you're needing to do further researching on. (y)
 

喜玛星

成员
已加入
2019年3月16日
留言内容
10
编程经验
Beginner
C#:
  static void Task3()
        {
            string word = "3.Uzdevums";
            Console.ForegroundColor = ConsoleColor.Green;
            Console.SetCursorPosition((Console.WindowWidth - word.Length) / 2, Console.CursorTop);
            Console.WriteLine(word);
            Console.ForegroundColor = ConsoleColor.DarkCyan;
            Console.WriteLine();

            //////////////////////
            //////////////////////
            

            Random rnd = new Random();

            // Masīvs char
            char[] chars = {
                ' ', 'a', 'b', 'c', 'd',
                'e', 'f', 'g', 'h', 'i',
                'j', 'k', 'l', 'm', 'n',
                'o', 'p', 'q', 'r', 's',
                't', 'u', 'v', 'w', 'x',
                'y', 'z', '1', '2', '3',
                '4', '5', '6', '7', '8',
                '9', '0' };
            // masīvs string
            string[] morze = {
                "  ", ". -", "- . . .", "- . - .", "- . .",
                ".", ". . - .", "- - .", ". . . .", ". .",
                ". - - -", "- . -", ". - . .", "- -", "- .",
                "- - -", ". - - .", "- - . -", ". - .", ". . .",
                "-", ". . -", ". . . -", ". - -", "- . . -", "- . - -",
                "- - . .", ". - - - -", ". . - - -", ". . . - -", ". . . . -",
                ". . . . .", "- . . . .", "- - . . .", "- - - . .",
                "- - - - .", "- - - - -" };
            // Tukšu string definēšana lietotāja ievadītā vārda un translācijas glabāšanai.

            string Input = "";
            string translation = "";

            // Tulkošana

            Console.Write("Input text, that'll be translated: ");
            Input = Console.ReadLine();
            Input = Input.ToLower();
            for (int x = 0; x < Input.Length; x++)
            {
                for (int y = 0; y < chars.Length; y++)
                {
                    if (Input[x] == chars[y])
                    {
                        translation += morze[y];
                        translation += "   ";
                        break;
                    }
                }
            }

            char[] Array = translation.ToCharArray();
            for (int i = 0; i < translation.Length; i++)
            {
                if (Array[i] == '.')
                {
                    Console.Beep(1000, 100);
                }
                if (Array[i] == '-')
                {
                    Console.Beep(1000, 800);
                }
                if (Array[i] == ' ')
                {
                    Thread.Sleep(100);
                }
            }
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.Write($"Translation: {translation}");
            Console.WriteLine();
        }
    }
 

跳伞者

工作人员
已加入
2019年4月6日
留言内容
2,612
地点
弗吉尼亚州切萨皮克
编程经验
10+
什么's the point of the rnd variable on line 14?

Yes, back in the 1950-60's using parallel arrays like you are doing with your 烧焦s and morze was the way to do things because that was the only thing they had with most of the commonly available programming languages back then. Nowadays we have learned to keep related information together in struct's and class's or special data structures. In this case when you are mapping one value to another, a 字典<> is the best data structure -- and this is what was suggested very early on in this thread.

并作为一个较小的怪癖:破折号的持续时间应该是点的持续时间的长度的三倍。当我尝试在Cub Scouts中学习摩尔斯电码时,这是我至今仍记得的几件事。
 
Last edited:

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,567
地点
悉尼,澳大利亚
编程经验
10+
所以你得到了 字典 一开始是正确的部分,但是您将它弄坏了,现在您有了一个 烧焦 数组,但是您不能正确使用它。你应该回到 字典 但是,如果要使用并发数组,至少要正确使用它们。关键是相同索引处的元素相对应,因此您应该使用这种关系:
C#:
细绳 input = Console.ReadLine();
string translation = string.Empty;

foreach (char ch in input)
{
    int index = Array.IndexOf(chars, char.ToLower(ch));
    
    // If invalid characters may be present, allow for index to be -1.
    
    translation += morze[index];
}
 
最佳 底部