Source code for submission s626

fs.cpp

  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. const char M1[]="ET";
  7. const char M2[]="IANM";
  8. const char M3[]="SURWDKGO";
  9. const char M4[]="HVF_L,PJBXCYZQ.?";
  10.  
  11. #define o morse[m++]=0;
  12. #define a morse[m++]=1;
  13. #define l(a) lens[i]=a;break;
  14. #define x break;
  15.  
  16. string coding(string input) {
  17. char morse[5000];
  18. int m=0;
  19.  
  20. char lens[1010];
  21.  
  22. int inlen=input.size();
  23. int i,j;
  24.  
  25. unsigned int code;
  26.  
  27. string output;
  28.  
  29. for(i=0;i<inlen;i++) {
  30. switch(input[i]) {
  31. case 'A': o a l(2)
  32. case 'B': a o o o l(4)
  33. case 'C': a o a o l(4)
  34. case 'D': a o o l(3)
  35. case 'E': o l(1)
  36. case 'F': o o a o l(4)
  37. case 'G': a a o l(3)
  38. case 'H': o o o o l(4)
  39. case 'I': o o l(2)
  40. case 'J': o a a a l(4)
  41. case 'K': a o a l(3)
  42. case 'L': o a o o l(4)
  43. case 'M': a a l(2)
  44. case 'N': a o l(2)
  45. case 'O': a a a l(3)
  46. case 'P': o a a o l(4)
  47. case 'Q': a a o a l(4)
  48. case 'R': o a o l(3)
  49. case 'S': o o o l(3)
  50. case 'T': a l(1)
  51. case 'U': o o a l(3)
  52. case 'V': o o o a l(4)
  53. case 'W': o a a l(3)
  54. case 'X': a o o a l(4)
  55. case 'Y': a o a a l(4)
  56. case 'Z': a a o o l(4)
  57. case '_': o o a a l(4)
  58. case ',': o a o a l(4)
  59. case '.': a a a o l(4)
  60. case '?': a a a a l(4)
  61. }
  62. }
  63.  
  64. m=0;
  65. for (i=inlen-1; i>=0; i--) {
  66. j=lens[i];
  67. code=0;
  68. while(j--) {
  69. code <<= 1;
  70. code += morse[m++];
  71. }
  72. switch(lens[i]) {
  73. case 1:
  74. output+=M1[code];
  75. break;
  76. case 2:
  77. output+=M2[code];
  78. break;
  79. case 3:
  80. output+=M3[code];
  81. break;
  82. case 4:
  83. output+=M4[code];
  84. break;
  85. }
  86. }
  87.  
  88. return output;
  89. }
  90.  
  91. int main() {
  92. string input;
  93.  
  94. while(cin >> input) {
  95. cout << coding(input) << endl;
  96. }
  97. }
  98.