用python实现摩尔斯编码 摩尔斯电码编码原则 您所在的位置:网站首页 摩尔斯电码书写格式 用python实现摩尔斯编码 摩尔斯电码编码原则

用python实现摩尔斯编码 摩尔斯电码编码原则

2024-07-08 23:24| 来源: 网络整理| 查看: 265

题目描述:

摩尔斯电码(Morse code)是美国人艾尔菲德 . 维尔于 1837 年发明的一种时通时断的信号代码。摩尔斯电码由两种基本信号和不同的间隔时间组成。两种基本信号为:短促的点信号.,读滴(Di);保持一定时间的长信号-,读嗒(Da),这两种基本信号通过不同的排列顺序表示不同的英文字母、数字和标点符号。例如:国际通用求救信号SOS,它的莫尔斯电码为...---...(三点,三长,三点,即:滴滴滴,嗒嗒嗒,滴滴滴)。

下面两张表为英文字母和数字的标准莫尔斯电码对照表。

用python实现摩尔斯编码 摩尔斯电码编码原则_c++

在摩尔斯电码中,字母 M; 表示为--(电报中为嗒嗒),字母 E; 表示为.(电报中为滴),字母 G; 表示为--.(电报中为嗒嗒滴),因此如果连续发送--.(嗒嗒滴),收报方会误以为是字母 G; 而不是ME。那么,为了表示ME,需要在两个字母之间加入间隔,例如,--/.(嗒嗒 / 滴),/可以用时间上的停顿来表示。因此,摩尔斯电码除了点信号和长信号,还有不同的间隔时间,根据间隔时间长短,可细分为 : 字符间短的间隔时间、单词之间中等长的间隔时间以及句子之间比较长的间隔时间 。

请编写一个程序,模拟莫尔斯电码的翻译,输入一串莫尔斯电码,输出其对应的明文信息。

假设在莫尔斯电码中,点信号用字符 .;(小数点)表示,长信号用字符 -;(减号)表示, 字符间短的间隔时间用一个字符 /; 表示,单词之间中等长的间隔时间用三个字符 /; 表示,句子之间比较长的间隔时间用五个字符 /; 表示。

例如:

莫尔斯电码:-/..../../...///../...///--/---/.-./..././//-.-./---/-.././-.../-.--/.

翻译出来的明文信息为:THIS IS MORSE CODE.BYE

说明:在输出时,单词之间用一个空格符分隔,句子之间用字符 . 分隔。所有字符均为大写字母。

输入格式:

第 1 行:一个整数 T(1≤T≤10)为问题数。

接下来 T 行,每行输入一串莫尔斯电码,电码长度不超过 1000 个字符,电码由.,-,/三种字符构成。

/表示输入的空格。

输出格式:

对于每个问题,输出一行问题的编号(0 开始编号,格式:case #0: 等)。然后对应每个问题在一行中输出莫尔斯电码表示的明文信息。

说明:在输出时,单词之间用一个空格符分隔,句子之间用字符. 分隔。英文字母均为大写字母。

样例:

Input

3

.../---/...

-/..../../...///../...///--/---/.-./..././//-.-./---/-.././-.../-.--/.

-./---///.----/..---/-----

Output

case #0:

SOS

case #1:

THIS IS MORSE CODE.BYE

case #2:

NO 120

思路分析:

本题题目还算较为简单,但编写代码稍显繁琐。首先要对输入的字符串切断(可以考虑split(),但是忘了,所以用了笨方法),根据'/'连续出现的次数来划分,一个就是字符,三个就要输出‘   ’,而连续五个则输出‘ . ’。其次对字符串比较与转换。可以考虑将数据录入到字典(不会,所以写的vector与字符串数组),使用find()函数,返回索引位置loc,输出字符串数组loc处的字符。

代码:#include using namespace std; string str[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", "-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----." }; char zifu[] = {'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', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; vector V(str, str + 36); int main() { int i, n; int r = 0; string str1, str2; cin >> n; cin.get(); while(n--) { getline(cin, str1); int len = str1.length(); int k = 0; cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有