Source code for submission s651

Go to diff to previous submission

fs.cpp

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4.  
  5. #include <iostream>
  6. #include <string>
  7. #include <vector>
  8. #include <map>
  9.  
  10. using namespace std;
  11.  
  12. map<char, string> to_morse;
  13. map<string, char> from_morse;
  14.  
  15. void load()
  16. {
  17. to_morse['A'] = ".-";
  18. to_morse['B'] = "-...";
  19. to_morse['C'] = "-.-.";
  20. to_morse['D'] = "-..";
  21. to_morse['E'] = ".";
  22. to_morse['F'] = "..-.";
  23. to_morse['G'] = "--.";
  24. to_morse['H'] = "....";
  25. to_morse['I'] = "..";
  26. to_morse['J'] = ".---";
  27. to_morse['K'] = "-.-";
  28. to_morse['L'] = ".-..";
  29. to_morse['M'] = "--";
  30. to_morse['N'] = "-.";
  31. to_morse['O'] = "---";
  32. to_morse['P'] = ".--.";
  33. to_morse['Q'] = "--.-";
  34. to_morse['R'] = ".-.";
  35. to_morse['S'] = "...";
  36. to_morse['T'] = "-";
  37. to_morse['U'] = "..-";
  38. to_morse['V'] = "...-";
  39. to_morse['W'] = ".--";
  40. to_morse['X'] = "-..-";
  41. to_morse['Y'] = "-.--";
  42. to_morse['Z'] = "--..";
  43. to_morse['_'] = "..--";
  44. to_morse[','] = ".-.-";
  45. to_morse['.'] = "---.";
  46. to_morse['?'] = "----";
  47.  
  48. from_morse[".-"] = 'A';
  49. from_morse["-..."] = 'B';
  50. from_morse["-.-."] = 'C' ;
  51. from_morse["-.."] = 'D' ;
  52. from_morse["."] = 'E' ;
  53. from_morse["..-."] = 'F' ;
  54. from_morse["--."] = 'G' ;
  55. from_morse["...."] = 'H' ;
  56. from_morse[".."] = 'I' ;
  57. from_morse[".---"] = 'J' ;
  58. from_morse["-.-"] = 'K' ;
  59. from_morse[".-.."] = 'L' ;
  60. from_morse["--"] = 'M' ;
  61. from_morse["-."] = 'N' ;
  62. from_morse["---"] = 'O' ;
  63. from_morse[".--."] = 'P' ;
  64. from_morse["--.-"] = 'Q' ;
  65. from_morse[".-."] = 'R' ;
  66. from_morse["..."] = 'S' ;
  67. from_morse["-"] = 'T' ;
  68. from_morse["..-"] = 'U';
  69. from_morse["...-"] = 'V' ;
  70. from_morse[".--"] = 'W' ;
  71. from_morse["-..-"] = 'X' ;
  72. from_morse["-.--"] = 'Y' ;
  73. from_morse["--.."] = 'Z' ;
  74. from_morse["..--"] = '_' ;
  75. from_morse[".-.-"] = ',' ;
  76. from_morse["---."] = '.' ;
  77. from_morse["----"] = '?' ;
  78. }
  79.  
  80. int main()
  81. {
  82. load();
  83. char c;
  84. string line, nums;
  85. while (scanf("%c", &c) == 1) {
  86. if (c == '\n') {
  87. for (int i = nums.size() - 1; i >= 0; i--) {
  88. int num = nums[i] - 48;
  89. string tok = line.substr(0, (unsigned)num);
  90. line = line.substr(num);
  91. cout << from_morse[tok];
  92. }
  93. cout << endl;
  94. line.clear();
  95. nums.clear();
  96. }
  97. else {
  98. string morse = to_morse[c];
  99. line.append(morse);
  100. nums.push_back((char) morse.size() + 48);
  101. }
  102. }
  103. return 0;
  104. }
  105.  

Diff to submission s617

fs.cpp

--- 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;