UVa 11223 - O: dah dah dah!

来源:互联网 发布:pururin新域名 编辑:程序博客网 时间:2024/05/16 09:33

题目:把摩斯码翻译成对应的明文。每个编码的结束标志是空格或者换行,其他原样输出。

分析:模拟,字符串。直接存到数组中查找即可。

说明:其他字符按原样输出即可。

#include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>using namespace std;char str[54][8] = {"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----.","..-.-.-",",--..--","?..--..","'.----.","!-.-.--","/-..-.","(-.--.",")-.--.-","&.-...",":---...",";-.-.-.","=-...-","+.-.-.","--....-","_..--.-","\".-..-.","@.--.-.",""}; void find_str( char *a ){for ( int i = 0 ; i < 54 ; ++ i )if ( !strcmp( a, &str[i][1] ) ) {printf("%c",str[i][0]);return;}}int main(){int T;scanf("%d",&T);getchar();for ( int t = 1 ; t <= T ; ++ t ) {char buf[1000];int  count = 0;printf("Message #%d\n",t);while ( (buf[count] = getchar()) != '\n' ) {if ( buf[count] == ' ' ) {if ( count ) {buf[count] = 0;find_str( buf );count = 0;}else printf(" ");}else if ( buf[count] == '.' || buf[count] == '-' ) count ++;else {printf("%c",buf[count]);count = 0;}}if ( count ) {buf[count] = 0;find_str( buf );}printf("\n");if ( t < T ) printf("\n");}return 0;}

0 0
原创粉丝点击