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
).
Entrada
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.
Salida
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).
Observación
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
.... .- .-- .- .. .. -... --- -- -... .- .. ... --- -. ..--- .--. .- .-. .- .. ... --- ...