Haz una función con la cabecera:
string to_morse(string s, const map<char,string>& M);
que recibe una frase (s) y la pasa al código Morse. En
este código, cada letra de la frase se convierte a una secuencia de
puntos i rayas. Por ejemplo, en Morse la letra 'w' (un
char) se traduce como ".--" (un
string).
La función recibe una frase (con cualquier caracter) y un
map que contiene la correspondencia entre cada caracter
Morse y la secuencia de puntos y rallas que lo codifica. El
map solo contiene como llaves letras mayúsculas i
dígitos.
Hay que devolver el mensaje entero en un string, es
decir, la concatenación de todas las traducciones a Morse de cada letra
en la frase, separadas por un espacio (y sin espacios al final). Si una
letra es minúscula, hay que pasarla a mayúsculas antes de buscarla en el
map. Si una letra no está en el map, hay que
ignorarla (un caso típico son los espacios).
No hay que hacer el programa principal. El Jutge utilitza el siguiente:
map<char, string> M;
M['A'] = ".-"; M['B'] = "-..."; M['C'] = "-.-."; M['D'] = "-..";
M['E'] = "."; M['F'] = "..-."; M['G'] = "--."; M['H'] = "....";
M['I'] = ".."; M['J'] = ".---"; M['K'] = "-.-"; M['L'] = ".-..";
M['M'] = "--"; M['N'] = "-."; M['O'] = "---"; M['P'] = ".--.";
M['Q'] = "--.-"; M['R'] = ".-."; M['S'] = "..."; M['T'] = "-";
M['U'] = "..-"; M['V'] = "...-"; M['W'] = ".--"; M['X'] = "-..-";
M['Y'] = "-.--"; M['Z'] = "--..";
M['0'] = "------"; M['1'] = ".-----"; M['2'] = "..---"; M['3'] = "...--";
M['4'] = "....-"; M['5'] = "....."; M['6'] = "-...."; M['7'] = "--...";
M['8'] = "---.."; M['9'] = "----.";
string s;
getline(cin, s);
cout << '"' << to_morse(s, M) << '"' << endl;
Input
SMS
Output
... -- ...
Input
Hawaii Bombai son 2 paraisos
Output
.... .- .-- .- .. .. -... --- -- -... .- .. ... --- -. ..--- .--. .- .-. .- .. ... --- ...