「EOJ」3061 摩尔斯电码
题目
摩尔斯电码(Morse code)是美国人艾尔菲德 . 维尔于 1837 年发明的一种时通时断的信号代码。摩尔斯电码由两种基本信号和不同的间隔时间组成。
两种基本信号为:短促的点信号.
,读滴
(Di);保持一定时间的长信号-
,读嗒
(Da),这两种基本信号通过不同的排列顺序表示不同的英文字母、数字和标点符号。例如:国际通用求救信号SOS
,它的莫尔斯电码为...---...
(三点,三长,三点,即:滴滴滴,嗒嗒嗒,滴滴滴)。
下面两张表为英文字母和数字的标准莫尔斯电码对照表。
在摩尔斯电码中,字母 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
答案(过于无聊)
void solve()
{ char *moose[36]={".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..","-----",".----","..---","...--","....-",".....","-....","--...","---..","----."};char str[1001],code[6],text[501];int i=0,j,k; char ch; int flag,n=0;gets(str);while(str[i]){ j=0;while(str[i]=='.'||str[i]=='-') code[j++]=str[i++]; code[j]='\0';for(k=0; k<36; k++)if(strcmp(code,moose[k])==0){ if(k<26) ch=k+65; else ch=k+22;text[n++]=ch; break; }if(k>=36) {printf("Data Error!\n");return;}flag=0;while(str[i]=='/') {flag++;i++;}if(flag==3) text[n++]=' '; else if(flag==5) text[n++]='.';}text[n]='\0'; printf("%s\n",text);
}
「EOJ」3061 摩尔斯电码相关推荐
- arduino串口监视器显示nan_使用Arduino开发板制作摩尔斯电码生成器
摩尔斯电码是一种通信系统,用于在两个不同持续时间的信号中编码任何字符,称为点和虚线.摩尔斯电码由Samuel F.B开发.并进一步用于电报传输秘密信息.它在第二次世界大战时最常用.摩尔斯电码可以通过点 ...
- python 转成摩尔斯电码_一篇文章教会你摩尔斯码
正规的摩尔斯码 对照表是这样: 其实记住主要的26个字母就够日常用了,而记26个字母有一张更简单的图: 把点和横线以字母的形态呈示出来,基本上看一遍就能记住大半了.不过要注意每个字母下方的一行小字,那 ...
- 蓝桥杯-9-3摩尔斯电码(java)
算法提高 9-3摩尔斯电码 时间限制:1.0s 内存限制:256.0MB问题描述摩尔斯电码破译.类似于乔林教材第213页的例6.5,要求输入摩尔斯码,返回英文.请不要使用"zylib.h&q ...
- C++morse code 摩尔斯电码算法(附完整源码)
morse code 摩尔斯电码的算法 morse code 摩尔斯电码的算法的完整源码(定义,实现,main函数测试) morse code 摩尔斯电码的算法的完整源码(定义,实现,main函数测试 ...
- 摩尔斯电码转换python编码_Morse Code 用Python做个摩斯密码转换器
摩斯密码摩尔斯电码(又译为摩斯密码,Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母.数字和标点符号,不同于现代只使用零和一两种状态的二进制代码,它的代码包括五种 ...
- android---手电筒之摩尔斯电码
摩尔斯电码通过控制闪光灯的开关的持续时间,来发送点和横,这次写代码的过程中,学习到了分解的好处,把每一步细分,带来的是开发效率的提升,如下面代码. public static void sleep(i ...
- 【愚公系列】2022年04月 编码解码-摩尔斯电码和栅栏密码
文章目录 一.摩尔斯电码和栅栏密码的介绍 1.摩尔斯电码 1.1 摩尔斯电码的概念 1.2 摩尔斯电码的应用: 2.栅栏密码 2.1 栅栏密码的概念 2.2 栅栏密码的应用 2.3 栅栏密码的脚本 3 ...
- Escape/Unescape,HTML实体编码,敲击码(Tap code),摩尔斯电码(Morse Code)
1.Escape/Unescape 加密解码/编码解码,又叫%u编码,采用UTF-16BE模式, Escape编码/加密,就是字符对应UTF-16 16进制表示方式前面加%u.Unescape解码/解 ...
- arduino nano 蓝牙_基于Arduino的摩尔斯电码练习及无线收发报训练器
摘要:本文介绍一款基于Arduino NANO开发的,带2.4G无线收发报功能的摩尔斯电码训练器的系统设计思路.发射端通过NANO板的外部中断引脚采集电键输入的脉冲PPM序列同时驱动喇叭播放电键音,然 ...
最新文章
- NumPy简明教程(二、数组2)
- Android—打包aar以及module依赖操作
- python中文乱码 def decode-python处理一些乱码的中文文本时decode('utf-8')报错的处理...
- 奥的斯服务器状态显示,奥的斯电梯调试服务器(俗称st)按键介绍
- (四)十大经典排序算法(动画图解,代码完全)
- Linux服务器非root用户下安装CUDA11.1和cudnn到指定目录
- 想创业赚钱 就必须了解赚钱的真相
- lr 远程压力机部署安装
- NFS挂载及写入故障
- udacity 的如何使用git课程终于找出merge master和coins时候的问题了
- MarkDown下载和安装图文教程
- jQuery和纯js实现addClass、removeClass方法
- 函数重载与参数缺省值共用可能引起两意性
- 最新版微信 C# 微信HOOK 源代码,微信版本 3.0.0.57
- 诚之和:3个月亏17亿,贝壳释放了什么信号?
- Linux系统-gzip命令 – 压缩和解压文件
- Dota2 世界冠军被 AI 吊打,全程只推了两座塔
- mili u盘 android手机,mili otg数据线如何使用?
- 一文读懂伪回归、协整、格兰杰
- SOLID 设计原则 (有点长但很透彻)