CSUOJ 1269 Morse Code Wristwatch
2014-07-30 18:48
357 查看
Description
Tokyoflash推出了一款摩斯电码手表,样图如下。要读懂这款手表,首先要了解一些摩斯电码的知识。
在了解了这些摩斯电码符号之后,就不难看懂表盘中显示的信息是“0217PM”了,也就是指下午2点17分。在12小时计时法中小时的取值范围为01到12之间的整数,AM代表上午,PM代表下午。
接下来我们就详细介绍一下这款摩斯电码手表是如何显示时间的。
手表的表盘是一个5*18的点阵,由6个5*3的点阵自左至右排列而成,每个5*3的点阵都显示了一个数字或字母的信息。
对于每个5*3的点阵,最左边一列始终都是暗的,类似分割线的作用。剩下两列由上至下一共5行,依次描述了一个数字或字母的摩斯电码。如果一行中两个点都是亮的,则表示摩斯电码中的'-',如果左边的点是亮的而右边的点是暗的,则表示摩斯电码中的'.',如果两个点都是暗的,则表示这个位置为空(因为字母'A','P','M'的摩斯电码不足5位,所以只用前若干行表示其摩斯电码,其余行为空)。
现在你要做的就是,对于一个给定的时间,打印出表盘上点阵的亮暗情况。
Input
输入的第一行为一个整数T(1<=T<=200),表示接下来一共有T组测试数据。每组测试数据占一行,包含三个长度为2的字符串,中间用空格隔开。第一个字符串为一个01到12之间的整数,表示小时。第二个字符串为一个00到59之间的整数,表示分钟。第三个字符串为”AM”或”PM”。
Output
对于每组测试数据,输出5行18列字符来表示点阵的亮暗情况,其中'#'表示这个点是亮的,'.'表示这个点是暗的。在每组测试数据后面输出一个空行。
SampleInput
3 0217PM 1259PM 0100AM
SampleOutput
.##.#..#..##.#..## .##.#..##.##.##.## .##.##.##.#..##... .##.##.##.#..#.... .##.##.##.#....... .#..#..#..##.#..## .##.#..#..##.##.## .##.##.#..##.##... .##.##.#..##.#.... .##.##.#..#....... .##.#..##.##.#..## .##.##.##.##.##.## .##.##.##.##...... .##.##.##.##...... .##.##.##.##...... 咋一看比较复杂认真分析下发现将数字或字母翻译成摩斯码并用点阵的形式输出出来即可。为了程序写起来方便,可以先用数组打一张表,描述每个数字和A、P、M对应的点阵,这样需要用到哪个数字或字母的时候直接打印对应的数组即可。
#include<stdio.h> #include<string> usingnamespacestd; intmain() { chars[10],ans[5][6]; intnum; strings0="-----",s1=".----",s2="..---",s3="...--",s4="....-",s5=".....", s6="-....",s7="--...",s8="---..",s9="----.",sa=".-",sp=".--.",sm="--"; scanf("%d\n",&num); while(num--){ gets(s); for(inti=0,j=0;i<8;i++,j++){ if(i==2||i==5){ //printf("itwork\n"); j=j-1; continue; } else //printf("%d%d%c\n",i,j,s[i]); switch(s[i]){ case'0':{ for(intk=0;k<5;k++){ ans[k][j]=s0[k]; //printf("%c-_-|||\n",ans[k][j]); } break; } case'1':{ for(intk=0;k<5;k++) ans[k][j]=s1[k]; break; } case'2':{ for(intk=0;k<5;k++) ans[k][j]=s2[k]; break; } case'3':{ for(intk=0;k<5;k++) ans[k][j]=s3[k]; break; } case'4':{ for(intk=0;k<5;k++) ans[k][j]=s4[k]; break; } case'5':{ for(intk=0;k<5;k++) ans[k][j]=s5[k]; break; } case'6':{ for(intk=0;k<5;k++) ans[k][j]=s6[k]; break; } case'7':{ for(intk=0;k<5;k++) ans[k][j]=s7[k]; break; } case'8':{ for(intk=0;k<5;k++) ans[k][j]=s8[k]; break; } case'9':{ for(intk=0;k<5;k++) ans[k][j]=s9[k]; break; } case'A':{ for(intk=0;k<5;k++) ans[k][j]=sa[k]; break; } case'P':{ for(intk=0;k<5;k++) ans[k][j]=sp[k]; break; } case'M':{ for(intk=0;k<5;k++) ans[k][j]=sm[k]; break; } } } /* for(inti=0;i<5;i++){ for(intj=0;j<6;j++) printf("%c",ans[i][j]); printf("\n"); } */ for(inti=0;i<5;i++){ for(intj=0;j<6;j++) if(ans[i][j]=='-') printf(".##"); elseif(ans[i][j]=='.') printf(".#."); elseif(ans[i][j]=='') printf("..."); printf("\n"); } printf("\n"); } return0; }
相关文章推荐
- CSU 1269: Morse Code Wristwatch(模拟啊 )
- dotnet watch+vs code提升asp.net core开发效率
- MorseCodeConverter 自用留存
- IDO one smart wristwatch Bluetooth Sync Smart Watch Pedometer and Sleep fitness bracelet
- Codevs 1269 匈牙利游戏 2012年CCC加拿大高中生信息学奥赛
- SleuthQA CodeWatch 跟踪程序资源泄漏
- LeetCode 804 Unique Morse Code Words
- CODEVS——T 1269 匈牙利游戏 2012年CCC加拿大高中生信息学奥赛
- dot watch+vs code提升asp.net core开发效率
- Leetcode 804 Unique Morse Code Words 莫尔斯电码重复问题
- 804. Unique Morse Code Words
- 3001-os-morse-code
- 匈牙利游戏(codevs 1269)
- watch postgres's source code commit
- International Morse Code
- 求次短路 codevs 1269 匈牙利游戏
- 【codevs1269】匈牙利游戏
- codevs1269匈牙利游戏(spfa跑次短路)
- csuoj-1716-Morse
- [LeetCode] Unique Morse Code Words 独特的摩斯码单词