摩斯密码实现

最近在学习摩斯密码。
我找到了这个
     这里写图片描述
人工对照比较麻烦,何尝不用程序实现呢?
//一年没摸了,写写水题= =

#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#define N 10
#define M 100
using namespace std;
char mosi[N],key[M][N],trans[M];
void def(){
    trans[1]='a';strcpy(key[1],".-");
    trans[2]='b';strcpy(key[2],"-...");    
    trans[3]='c';strcpy(key[3],"-.-.");
    trans[4]='d';strcpy(key[4],"-..");
    trans[5]='e';strcpy(key[5],".");
    trans[6]='f';strcpy(key[6],"..-.");
    trans[7]='g';strcpy(key[7],"--.");
    trans[8]='h';strcpy(key[8],"....");
    trans[9]='i';strcpy(key[9],"..");
    trans[10]='j';strcpy(key[10],".---");
    trans[11]='k';strcpy(key[11],"-.-");
    trans[12]='l';strcpy(key[12],".-..");
    trans[13]='m';strcpy(key[13],"--");
    trans[14]='n';strcpy(key[14],"-.");
    trans[15]='o';strcpy(key[15],"---");
    trans[16]='p';strcpy(key[16],".--.");
    trans[17]='q';strcpy(key[17],"--.-");
    trans[18]='r';strcpy(key[18],".-.");
    trans[19]='s';strcpy(key[19],"...");
    trans[20]='t';strcpy(key[20],"-");
    trans[21]='u';strcpy(key[21],"..-");
    trans[22]='v';strcpy(key[22],"...-");
    trans[23]='w';strcpy(key[23],".--");
    trans[24]='x';strcpy(key[24],"-..-");
    trans[25]='y';strcpy(key[25],"-.--");
    trans[26]='z';strcpy(key[26],"--..");
    trans[27]='0';strcpy(key[27],"-----");
    trans[28]='1';strcpy(key[28],".----");
    trans[29]='2';strcpy(key[29],"..---");
    trans[30]='3';strcpy(key[30],"...--");
    trans[31]='4';strcpy(key[31],"....-");
    trans[32]='5';strcpy(key[32],".....");
    trans[33]='6';strcpy(key[33],"-....");
    trans[34]='7';strcpy(key[34],"--...");
    trans[35]='8';strcpy(key[35],"---..");
    trans[36]='9';strcpy(key[36],"----.");
    trans[37]='.';strcpy(key[37],".-.-.-");
    trans[38]=':';strcpy(key[38],"---...");
    trans[39]=',';strcpy(key[39],"--..--");
    trans[40]=';';strcpy(key[40],"-.-.-.");
    trans[41]='?';strcpy(key[41],"..--..");
    trans[42]='=';strcpy(key[42],"-...-");
    trans[43]='X';strcpy(key[43],".----.");
    trans[44]='/';strcpy(key[44],"-..-.");
    trans[45]='!';strcpy(key[45],"-.-.--");
    trans[46]='-';strcpy(key[46],"-....-");
    trans[47]='_';strcpy(key[47],"..--.-");
    trans[48]='"';strcpy(key[48],".-..-.");
    trans[49]='(';strcpy(key[49],"-.--.");
    trans[50]=')';strcpy(key[50],"-.--.-");
    trans[51]='$';strcpy(key[51],"...-..-");
    trans[52]='&';strcpy(key[52],"....");
    trans[53]='@';strcpy(key[53],".--.-.");
}
int main(){
    def();
    while(scanf("%s",mosi))
    {
        for (int i= 1;i <=53;i++)
            if(strcmp(mosi,key[i])==0) {cout<<trans[i];break;} 
    }
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
摩斯密码是一种将字母和数字转换成一系列点和划的编码方式,可以通过Python编程实现。下面是一个简单的实现方式: ```python # 定义摩斯密码字典 MORSE_CODE_DICT = { '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':'-----' } def encrypt(message): cipher = '' for letter in message: if letter != ' ': cipher += MORSE_CODE_DICT[letter.upper()] + ' ' else: cipher += ' ' return cipher def decrypt(message): message += ' ' decipher = '' citext = '' for letter in message: if (letter != ' '): i = 0 citext += letter else: i += 1 if i == 2: decipher += ' ' else: decipher += list(MORSE_CODE_DICT.keys())[list(MORSE_CODE_DICT.values()).index(citext)] citext = '' return decipher # 示例 message = "CSDN AI助手" result = encrypt(message) print(result) result2 = decrypt(result) print(result2) ``` 该程序中,我们定义了一个摩斯密码字典 `MORSE_CODE_DICT`,其中包含了每个字母和数字对应的摩斯密码。`encrypt()` 函数接受一个字符串作为参数,返回该字符串的摩斯密码形式。`decrypt()` 函数接受一个摩斯密码形式的字符串作为参数,返回该字符串的明文形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值