Fes una funció amb la capçalera:
string to_morse(string s, const map<char,string>& M);
que rep una paraula (s) i la passa al codi Morse. En
aquest codi, cada lletra de la paraula es converteix en una seqüència de
punts i ratlles. Per exemple, en Morse la lletra 'w' (un
char) es tradueix com ".--" (un
string).
La funció rep una frase (amb caracters qualssevol) i un
map que conté la correspondència entra cada caràcter Morse
i la seqüència de punts i ratlles que el codifica. El map
només conté com a claus lletres majúscules i dígits.
Cal treure el missatge sencer en un string, és a dir, la
concatenació de totes les traduccions a Morse de cada lletra, separats
per un espai (i sense espai al final). Si una lletra és minúscula, s’ha
de passar a majúscules abans de buscar-la al map. Si una lletra no es
troba al map, s’ha d’ignorar (un cas típic són els
espais).
No feu el programa principal. El Jutge utilitza el següent programa principal:
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
.... .- .-- .- .. .. -... --- -- -... .- .. ... --- -. ..--- .--. .- .-. .- .. ... --- ...