// UVa 11223 - O: dah dah dah!
#include <stdio.h>
#include <sstream>
#include <iostream>
#include <map>
#include <string>
using namespace std;
map<string, string> decode;
string key = "A .- J .--- S ... 1 .---- . .-.-.- : ---... " + "B -... K -.- T - 2 ..--- ; -.-.-. " + "C -.-. L .-.. U ..- 3 ...-- ? ..--.. = -...- " + "D -.. M -- V ...- 4 ....- ' .----. + .-.-. "
+ "E . N -. W .-- 5 ..... ! -.-.-- - -....- " + "F ..-. O --- X -..- 6 -.... / -..-. _ ..--.- " + "G --. P .--. Y -.-- 7 --... ( -.--. \" .-..-. "
+ "H .... Q --.- Z --.. 8 ---.. ) -.--.- @ .--.-. " + "I .. R .-. 0 ----- 9 ----. & .-...";
void init_morse_map() {
istringstream istrm(key);
string a, b;
while (istrm >> a >> b) {
decode[b] = a;
}
decode["--..--"] = ",";
decode[" "] = " ";
}
int main() {
init_morse_map();
int cases;
scanf("%d\n", &cases);
for (int cas = 1; cas <= cases; cas++) {
char ch;
string message, previous = "";
for (scanf("%c", &ch); ch != 10 && ch != 13; scanf("%c", &ch)) {
if (ch == '.' || ch == '-') {
if (previous == " ")
previous = "";
previous += ch;
} else if (ch == ' ' && previous == " ") {
previous = "";
message += " ";
} else {
message += decode[previous];
previous = ch == ' ' ? " " : "";
}
}
message += decode[previous];
if (cas > 1)
printf("\n");
printf("Message #%d\n%s\n", cas, message.c_str());
}
return 0;
}
Tuesday, April 21, 2015
UVa 11223 - O: dah dah dah!
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment