Go to diff to previous submission
#include <cstdlib> #include <cstdio> #include <cstring> #include <string> #include <iostream> #include <map> 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() { char message[1010]; int lens[1010]; struct { char chrs[128][5]; int lens[128]; } t2m; memset(t2m.chrs, 0, sizeof(t2m.chrs)); strcpy(t2m.chrs['A'], ".-"); t2m.lens['A'] = strlen(t2m.chrs['A']); strcpy(t2m.chrs['B'], "-..."); t2m.lens['B'] = strlen(t2m.chrs['B']); strcpy(t2m.chrs['C'], "-.-."); t2m.lens['C'] = strlen(t2m.chrs['C']); strcpy(t2m.chrs['D'], "-.."); t2m.lens['D'] = strlen(t2m.chrs['D']); strcpy(t2m.chrs['E'], "."); t2m.lens['E'] = strlen(t2m.chrs['E']); strcpy(t2m.chrs['F'], "..-."); t2m.lens['F'] = strlen(t2m.chrs['F']); strcpy(t2m.chrs['G'], "--."); t2m.lens['G'] = strlen(t2m.chrs['G']); strcpy(t2m.chrs['H'], "...."); t2m.lens['H'] = strlen(t2m.chrs['H']); strcpy(t2m.chrs['I'], ".."); t2m.lens['I'] = strlen(t2m.chrs['I']); strcpy(t2m.chrs['J'], ".---"); t2m.lens['J'] = strlen(t2m.chrs['J']); strcpy(t2m.chrs['K'], "-.-"); t2m.lens['K'] = strlen(t2m.chrs['K']); strcpy(t2m.chrs['L'], ".-.."); t2m.lens['L'] = strlen(t2m.chrs['L']); strcpy(t2m.chrs['M'], "--"); t2m.lens['M'] = strlen(t2m.chrs['M']); strcpy(t2m.chrs['N'], "-."); t2m.lens['N'] = strlen(t2m.chrs['N']); strcpy(t2m.chrs['O'], "---"); t2m.lens['O'] = strlen(t2m.chrs['O']); strcpy(t2m.chrs['P'], ".--."); t2m.lens['P'] = strlen(t2m.chrs['P']); strcpy(t2m.chrs['Q'], "--.-"); t2m.lens['Q'] = strlen(t2m.chrs['Q']); strcpy(t2m.chrs['R'], ".-."); t2m.lens['R'] = strlen(t2m.chrs['R']); strcpy(t2m.chrs['S'], "..."); t2m.lens['S'] = strlen(t2m.chrs['S']); strcpy(t2m.chrs['T'], "-"); t2m.lens['T'] = strlen(t2m.chrs['T']); strcpy(t2m.chrs['U'], "..-"); t2m.lens['U'] = strlen(t2m.chrs['U']); strcpy(t2m.chrs['V'], "...-"); t2m.lens['V'] = strlen(t2m.chrs['V']); strcpy(t2m.chrs['W'], ".--"); t2m.lens['W'] = strlen(t2m.chrs['W']); strcpy(t2m.chrs['X'], "-..-"); t2m.lens['X'] = strlen(t2m.chrs['X']); strcpy(t2m.chrs['Y'], "-.--"); t2m.lens['Y'] = strlen(t2m.chrs['Y']); strcpy(t2m.chrs['Z'], "--.."); t2m.lens['Z'] = strlen(t2m.chrs['Z']); strcpy(t2m.chrs['_'], "..--"); t2m.lens['_'] = strlen(t2m.chrs['_']); strcpy(t2m.chrs['.'], "---."); t2m.lens['.'] = strlen(t2m.chrs['.']); strcpy(t2m.chrs[','], ".-.-"); t2m.lens[','] = strlen(t2m.chrs[',']); strcpy(t2m.chrs['?'], "----"); t2m.lens['?'] = strlen(t2m.chrs['?']); m2t['.']['-'][0][0] = 'A'; m2t['-']['.']['.']['.'] = 'B'; m2t['-']['.']['-']['.'] = 'C'; m2t['-']['.']['.'][0] = 'D'; m2t['.'][0][0][0] = 'E'; m2t['.']['.']['-']['.'] = 'F'; m2t['-']['-']['.'][0] = 'G'; m2t['.']['.']['.']['.'] = 'H'; m2t['.']['.'][0][0] = 'I'; m2t['.']['-']['-']['-'] = 'J'; m2t['-']['.']['-'][0] = 'K'; m2t['.']['-']['.']['.'] = 'L'; m2t['-']['-'][0][0] = 'M'; m2t['-']['.'][0][0] = 'N'; m2t['-']['-']['-'][0] = 'O'; m2t['.']['-']['-']['.'] = 'P'; m2t['-']['-']['.']['-'] = 'Q'; m2t['.']['-']['.'][0] = 'R'; m2t['.']['.']['.'][0] = 'S'; m2t['-'][0][0][0] = 'T'; m2t['.']['.']['-'][0] = 'U'; m2t['.']['.']['.']['-'] = 'V'; m2t['.']['-']['-'][0] = 'W'; m2t['-']['.']['.']['-'] = 'X'; m2t['-']['.']['-']['-'] = 'Y'; m2t['-']['-']['.']['.'] = 'Z'; m2t['.']['.']['-']['-'] = '_'; m2t['-']['-']['-']['.'] = '.'; m2t['.']['-']['.']['-'] = ','; m2t['-']['-']['-']['-'] = '?'; while (fgets(message, sizeof(message), stdin)) { string morse; int len = strlen(message) - 1; for (int i = 0; i < len; i++) { morse.append(t2m.chrs[message[i]]); lens[i] = t2m.lens[message[i]]; } reverse(lens, lens + len - 1); 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 += 2; break; case 3: putchar(m2t[morse[i]][morse[i + 1]][morse[i + 2]][0]); i += 3; break; case 4: putchar(m2t[morse[i]][morse[i + 1]][morse[i + 2]][morse[i + 3]]); i += 4; break; } } putchar('\n'); } return 0; }
--- c5.s704.cteam050.fs.cpp.0.fs.cpp +++ c5.s734.cteam050.fs.cpp.0.fs.cpp @@ -23,6 +23,6 @@ int main() { - char message[1001]; - int lens[1001]; + char message[1010]; + int lens[1010]; struct { char chrs[128][5];