Source code for submission s704

Go to diff to previous submission

fs.cpp

  1. #include <cstdlib>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <string>
  5. #include <iostream>
  6. #include <map>
  7.  
  8. using namespace std;
  9.  
  10. char m2t [47][47][47][47];
  11.  
  12. void reverse(int *s, int *e)
  13. {
  14. while (s < e) {
  15. int help = *s;
  16. *s = *e;
  17. *e = help;
  18. s++;
  19. e--;
  20. }
  21. }
  22.  
  23. int main()
  24. {
  25. char message[1001];
  26. int lens[1001];
  27. struct {
  28. char chrs[128][5];
  29. int lens[128];
  30. } t2m;
  31.  
  32. memset(t2m.chrs, 0, sizeof(t2m.chrs));
  33.  
  34. strcpy(t2m.chrs['A'], ".-");
  35. t2m.lens['A'] = strlen(t2m.chrs['A']);
  36. strcpy(t2m.chrs['B'], "-...");
  37. t2m.lens['B'] = strlen(t2m.chrs['B']);
  38. strcpy(t2m.chrs['C'], "-.-.");
  39. t2m.lens['C'] = strlen(t2m.chrs['C']);
  40. strcpy(t2m.chrs['D'], "-..");
  41. t2m.lens['D'] = strlen(t2m.chrs['D']);
  42. strcpy(t2m.chrs['E'], ".");
  43. t2m.lens['E'] = strlen(t2m.chrs['E']);
  44. strcpy(t2m.chrs['F'], "..-.");
  45. t2m.lens['F'] = strlen(t2m.chrs['F']);
  46. strcpy(t2m.chrs['G'], "--.");
  47. t2m.lens['G'] = strlen(t2m.chrs['G']);
  48. strcpy(t2m.chrs['H'], "....");
  49. t2m.lens['H'] = strlen(t2m.chrs['H']);
  50. strcpy(t2m.chrs['I'], "..");
  51. t2m.lens['I'] = strlen(t2m.chrs['I']);
  52. strcpy(t2m.chrs['J'], ".---");
  53. t2m.lens['J'] = strlen(t2m.chrs['J']);
  54. strcpy(t2m.chrs['K'], "-.-");
  55. t2m.lens['K'] = strlen(t2m.chrs['K']);
  56. strcpy(t2m.chrs['L'], ".-..");
  57. t2m.lens['L'] = strlen(t2m.chrs['L']);
  58. strcpy(t2m.chrs['M'], "--");
  59. t2m.lens['M'] = strlen(t2m.chrs['M']);
  60. strcpy(t2m.chrs['N'], "-.");
  61. t2m.lens['N'] = strlen(t2m.chrs['N']);
  62. strcpy(t2m.chrs['O'], "---");
  63. t2m.lens['O'] = strlen(t2m.chrs['O']);
  64. strcpy(t2m.chrs['P'], ".--.");
  65. t2m.lens['P'] = strlen(t2m.chrs['P']);
  66. strcpy(t2m.chrs['Q'], "--.-");
  67. t2m.lens['Q'] = strlen(t2m.chrs['Q']);
  68. strcpy(t2m.chrs['R'], ".-.");
  69. t2m.lens['R'] = strlen(t2m.chrs['R']);
  70. strcpy(t2m.chrs['S'], "...");
  71. t2m.lens['S'] = strlen(t2m.chrs['S']);
  72. strcpy(t2m.chrs['T'], "-");
  73. t2m.lens['T'] = strlen(t2m.chrs['T']);
  74. strcpy(t2m.chrs['U'], "..-");
  75. t2m.lens['U'] = strlen(t2m.chrs['U']);
  76. strcpy(t2m.chrs['V'], "...-");
  77. t2m.lens['V'] = strlen(t2m.chrs['V']);
  78. strcpy(t2m.chrs['W'], ".--");
  79. t2m.lens['W'] = strlen(t2m.chrs['W']);
  80. strcpy(t2m.chrs['X'], "-..-");
  81. t2m.lens['X'] = strlen(t2m.chrs['X']);
  82. strcpy(t2m.chrs['Y'], "-.--");
  83. t2m.lens['Y'] = strlen(t2m.chrs['Y']);
  84. strcpy(t2m.chrs['Z'], "--..");
  85. t2m.lens['Z'] = strlen(t2m.chrs['Z']);
  86. strcpy(t2m.chrs['_'], "..--");
  87. t2m.lens['_'] = strlen(t2m.chrs['_']);
  88. strcpy(t2m.chrs['.'], "---.");
  89. t2m.lens['.'] = strlen(t2m.chrs['.']);
  90. strcpy(t2m.chrs[','], ".-.-");
  91. t2m.lens[','] = strlen(t2m.chrs[',']);
  92. strcpy(t2m.chrs['?'], "----");
  93. t2m.lens['?'] = strlen(t2m.chrs['?']);
  94.  
  95. m2t['.']['-'][0][0] = 'A';
  96. m2t['-']['.']['.']['.'] = 'B';
  97. m2t['-']['.']['-']['.'] = 'C';
  98. m2t['-']['.']['.'][0] = 'D';
  99. m2t['.'][0][0][0] = 'E';
  100. m2t['.']['.']['-']['.'] = 'F';
  101. m2t['-']['-']['.'][0] = 'G';
  102. m2t['.']['.']['.']['.'] = 'H';
  103. m2t['.']['.'][0][0] = 'I';
  104. m2t['.']['-']['-']['-'] = 'J';
  105. m2t['-']['.']['-'][0] = 'K';
  106. m2t['.']['-']['.']['.'] = 'L';
  107. m2t['-']['-'][0][0] = 'M';
  108. m2t['-']['.'][0][0] = 'N';
  109. m2t['-']['-']['-'][0] = 'O';
  110. m2t['.']['-']['-']['.'] = 'P';
  111. m2t['-']['-']['.']['-'] = 'Q';
  112. m2t['.']['-']['.'][0] = 'R';
  113. m2t['.']['.']['.'][0] = 'S';
  114. m2t['-'][0][0][0] = 'T';
  115. m2t['.']['.']['-'][0] = 'U';
  116. m2t['.']['.']['.']['-'] = 'V';
  117. m2t['.']['-']['-'][0] = 'W';
  118. m2t['-']['.']['.']['-'] = 'X';
  119. m2t['-']['.']['-']['-'] = 'Y';
  120. m2t['-']['-']['.']['.'] = 'Z';
  121. m2t['.']['.']['-']['-'] = '_';
  122. m2t['-']['-']['-']['.'] = '.';
  123. m2t['.']['-']['.']['-'] = ',';
  124. m2t['-']['-']['-']['-'] = '?';
  125.  
  126. while (fgets(message, sizeof(message), stdin)) {
  127. string morse;
  128. int len = strlen(message) - 1;
  129. for (int i = 0; i < len; i++) {
  130. morse.append(t2m.chrs[message[i]]);
  131. lens[i] = t2m.lens[message[i]];
  132. }
  133.  
  134. reverse(lens, lens + len - 1);
  135.  
  136. for (int i = 0, j = 0; j < len; j++) {
  137. switch (lens[j]) {
  138. case 1:
  139. putchar(m2t[morse[i]][0][0][0]);
  140. i++;
  141. break;
  142. case 2:
  143. putchar(m2t[morse[i]][morse[i + 1]][0][0]);
  144. i += 2;
  145. break;
  146. case 3:
  147. putchar(m2t[morse[i]][morse[i + 1]][morse[i + 2]][0]);
  148. i += 3;
  149. break;
  150. case 4:
  151. putchar(m2t[morse[i]][morse[i + 1]][morse[i + 2]][morse[i + 3]]);
  152. i += 4;
  153. break;
  154. }
  155. }
  156.  
  157. putchar('\n');
  158. }
  159.  
  160. return 0;
  161. }
  162.  

Diff to submission s597

fc.cpp

--- c5.s597.cteam050.fs.cpp.0.fc.cpp
+++ c5.s704.cteam050.fs.cpp.0.fs.cpp
@@ -1,2 +1,3 @@
+#include <cstdlib>
 #include <cstdio>
 #include <cstring>
@@ -7,4 +8,17 @@
 using namespace std;
 
+    char m2t [47][47][47][47];
+
+void reverse(int *s, int *e)
+{
+    while (s < e) {
+        int help = *s;
+        *s = *e;
+        *e = help;
+        s++;
+        e--;
+    }
+}
+
 int main()
 {
@@ -18,5 +32,4 @@
     memset(t2m.chrs, 0, sizeof(t2m.chrs));
 
-    t2m.chrs['A'][0] = 'a';
     strcpy(t2m.chrs['A'], ".-");
     t2m.lens['A'] = strlen(t2m.chrs['A']);
@@ -76,9 +89,8 @@
     t2m.lens['.'] = strlen(t2m.chrs['.']);
     strcpy(t2m.chrs[','], ".-.-");
-    t2m.lens[','] = strlen(t2m.chrs['.']);
+    t2m.lens[','] = strlen(t2m.chrs[',']);
     strcpy(t2m.chrs['?'], "----");
-    t2m.lens['?'] = strlen(t2m.chrs['.']);
+    t2m.lens['?'] = strlen(t2m.chrs['?']);
 
-    char m2t [47][47][47][47];
     m2t['.']['-'][0][0] = 'A';
     m2t['-']['.']['.']['.'] = 'B';
@@ -120,32 +132,23 @@
         }
 
-        int *s, *e;
-        s = lens;
-        e = lens + len - 1;
-
-        while (s < e) {
-            int help = *s;
-            *s = *e;
-            *e = help;
-            s++;
-            e--;
-        }
+        reverse(lens, lens + len - 1);
 
-        for (int i = 0, j = 0; j < len; i++, j++) {
+        for (int i = 0, j = 0; j < len; j++) {
             switch (lens[j]) {
                 case 1:
                     putchar(m2t[morse[i]][0][0][0]);
+                    i++;
                     break;
                 case 2:
                     putchar(m2t[morse[i]][morse[i + 1]][0][0]);
-                    i++;
+                    i += 2;
                     break;
                 case 3:
                     putchar(m2t[morse[i]][morse[i + 1]][morse[i + 2]][0]);
-                    i += 2;
+                    i += 3;
                     break;
                 case 4:
                     putchar(m2t[morse[i]][morse[i + 1]][morse[i + 2]][morse[i + 3]]);
-                    i += 3;
+                    i += 4;
                     break;
             }