Go to diff to previous submission
#include <cstdio> #include <cstdlib> #include <cmath> #include <iostream> #include <string> #include <vector> #include <map> using namespace std; map<char, string> to_morse; map<string, char> from_morse; void load() { to_morse['A'] = ".-"; to_morse['B'] = "-..."; to_morse['C'] = "-.-."; to_morse['D'] = "-.."; to_morse['E'] = "."; to_morse['F'] = "..-."; to_morse['G'] = "--."; to_morse['H'] = "...."; to_morse['I'] = ".."; to_morse['J'] = ".---"; to_morse['K'] = "-.-"; to_morse['L'] = ".-.."; to_morse['M'] = "--"; to_morse['N'] = "-."; to_morse['O'] = "---"; to_morse['P'] = ".--."; to_morse['Q'] = "--.-"; to_morse['R'] = ".-."; to_morse['S'] = "..."; to_morse['T'] = "-"; to_morse['U'] = "..-"; to_morse['V'] = "...-"; to_morse['W'] = ".--"; to_morse['X'] = "-..-"; to_morse['Y'] = "-.--"; to_morse['Z'] = "--.."; to_morse['_'] = "..--"; to_morse[','] = ".-.-"; to_morse['.'] = "---."; to_morse['?'] = "----"; from_morse[".-"] = 'A'; from_morse["-..."] = 'B'; from_morse["-.-."] = 'C' ; from_morse["-.."] = 'D' ; from_morse["."] = 'E' ; from_morse["..-."] = 'F' ; from_morse["--."] = 'G' ; from_morse["...."] = 'H' ; from_morse[".."] = 'I' ; from_morse[".---"] = 'J' ; from_morse["-.-"] = 'K' ; from_morse[".-.."] = 'L' ; from_morse["--"] = 'M' ; from_morse["-."] = 'N' ; from_morse["---"] = 'O' ; from_morse[".--."] = 'P' ; from_morse["--.-"] = 'Q' ; from_morse[".-."] = 'R' ; from_morse["..."] = 'S' ; from_morse["-"] = 'T' ; from_morse["..-"] = 'U'; from_morse["...-"] = 'V' ; from_morse[".--"] = 'W' ; from_morse["-..-"] = 'X' ; from_morse["-.--"] = 'Y' ; from_morse["--.."] = 'Z' ; from_morse["..--"] = '_' ; from_morse[".-.-"] = ',' ; from_morse["---."] = '.' ; from_morse["----"] = '?' ; } int main() { load(); char c; string line, nums; while (scanf("%c", &c) == 1) { if (c == '\n') { for (int i = nums.size() - 1; i >= 0; i--) { int num = nums[i] - 48; string tok = line.substr(0, (unsigned)num); line = line.substr(num); cout << from_morse[tok]; } cout << endl; line.clear(); nums.clear(); } else { string morse = to_morse[c]; line.append(morse); nums.push_back((char) morse.size() + 48); } } return 0; }
--- c5.s617.cteam037.fs.cpp.0.fs.cpp +++ c5.s651.cteam037.fs.cpp.0.fs.cpp @@ -89,5 +89,4 @@ string tok = line.substr(0, (unsigned)num); line = line.substr(num); - //cout << tok << endl; cout << from_morse[tok]; } @@ -96,8 +95,9 @@ nums.clear(); } - - string morse = to_morse[c]; - line.append(morse); - nums.push_back((char) morse.size() + 48); + else { + string morse = to_morse[c]; + line.append(morse); + nums.push_back((char) morse.size() + 48); + } } return 0;