Source code for submission s811

fs.cpp

  1. #include <iostream>
  2. #include <vector>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. std::string decode(std::vector<std::string> morseArray, std::string test)
  7. {
  8. int i;
  9. int j;
  10. int k;
  11. std::string final = "";
  12. std::string res = "";
  13. std::string num = " ";
  14. for(i=0;i<test.size();i++)
  15. {
  16. //std::cout << morseArray[(int)(test[i] - 'A')] << std::endl;
  17. switch(test[i])
  18. {
  19. case '_':
  20. res += morseArray[26];
  21. num += morseArray[26].length()+48;
  22. break;
  23. case ',':
  24. res += morseArray[27];
  25. num += morseArray[27].length()+48;
  26. break;
  27. case '.':
  28. res += morseArray[28];
  29. num += morseArray[28].length()+48;
  30. break;
  31. case '?':
  32. res += morseArray[29];
  33. num += morseArray[29].length()+48;
  34. break;
  35. default:
  36. res += morseArray[(int)(test[i]-'A')];
  37. num += morseArray[(int)(test[i]-'A')].length() + 48;
  38. //std::cout << morseArray[(int)(test[i]-'A')].length();
  39. break;
  40. }
  41.  
  42. }
  43. res += num;
  44. //std::cout << res << std::endl;
  45. int begin = 0;
  46. int begin2 = 0;
  47.  
  48. for(i = num.size();i>0;i--)
  49. {
  50. begin2 = 0;
  51. std::string helpstring = "";
  52. for(j = 0;j<(num[i] - 48);j++)
  53. {
  54. helpstring += res[j+begin];
  55. begin2++;
  56. }
  57. begin += begin2;
  58. if(helpstring == morseArray[26])
  59. final += "_";
  60. else if(helpstring == morseArray[27])
  61. final += ",";
  62. else if(helpstring == morseArray[28])
  63. final += ".";
  64. else if(helpstring == morseArray[29])
  65. final += "?";
  66. else
  67. for(k = 0;k<morseArray.size();k++)
  68. {
  69. if(helpstring == morseArray[k])
  70. final += char(k+65);
  71. }
  72. }
  73.  
  74. return final;
  75. }
  76.  
  77. int main()
  78. {
  79. std::vector<std::string> morseArray;
  80.  
  81. morseArray.push_back(".-");
  82. morseArray.push_back("-...");
  83. morseArray.push_back("-.-.");
  84. morseArray.push_back("-..");
  85. morseArray.push_back(".");
  86. morseArray.push_back("..-.");
  87. morseArray.push_back("--.");
  88. morseArray.push_back("....");
  89. morseArray.push_back("..");
  90. morseArray.push_back(".---");
  91. morseArray.push_back("-.-");
  92. morseArray.push_back(".-..");
  93. morseArray.push_back("--");
  94. morseArray.push_back("-.");
  95. morseArray.push_back("---");
  96. morseArray.push_back(".--.");
  97. morseArray.push_back("--.-");
  98. morseArray.push_back(".-.");
  99. morseArray.push_back("...");
  100. morseArray.push_back("-");
  101. morseArray.push_back("..-");
  102. morseArray.push_back("...-");
  103. morseArray.push_back(".--");
  104. morseArray.push_back("-..-");
  105. morseArray.push_back("-.--");
  106. morseArray.push_back("--..");
  107. morseArray.push_back("..--");
  108. morseArray.push_back(".-.-");
  109. morseArray.push_back("---.");
  110. morseArray.push_back("----");
  111.  
  112. std::string test = "AKADTOF_IBOETATUK_IJN";
  113.  
  114. std::string inputString;
  115. while(getline(std::cin,inputString))
  116. {
  117. std::cout << decode(morseArray,inputString) << std::endl;
  118. }
  119.  
  120. return 0;
  121. }
  122.