Source code for submission s582

fs.cpp

  1. //
  2. // File: fs.cc
  3. // Author: cteam008
  4. //
  5. // Created on October 19, 2013, 10:50 AM
  6. //
  7.  
  8. #include <stdlib.h>
  9. #include <stdio.h>
  10. #include <string>
  11. #include <iostream>
  12. #include <map>
  13.  
  14. using namespace std;
  15. //
  16. //
  17. //
  18. int main(int argc, char** argv) {
  19. int sizes[1000], idx,alphaSize = 30;
  20. string line, m, result, s;
  21. string morse[] = {
  22. "..--",
  23. "---.",
  24. ".-.-",
  25. "----",
  26. ".-",
  27. "-...",
  28. "-.-.",
  29. "-..",
  30. ".",
  31. "..-.",
  32. "--.",
  33. "....",
  34. "..",
  35. ".---",
  36. "-.-",
  37. ".-..",
  38. "--",
  39. "-.",
  40. "---",
  41. ".--.",
  42. "--.-",
  43. ".-.",
  44. "...",
  45. "-",
  46. "..-",
  47. "...-",
  48. ".--",
  49. "-..-",
  50. "-.--",
  51. "--.."
  52. };
  53. map<string, int> toChar;
  54. toChar[morse[0]] = 95;
  55. toChar[morse[1]] = 46;
  56. toChar[morse[2]] = 44;
  57. toChar[morse[3]] = 63;
  58. for (int i = 4; i < alphaSize; i++) {
  59. toChar[morse[i]] = i+61;
  60. }
  61. while (getline(cin, line)) {
  62. m = "";
  63. for (int i = 0; i < line.size(); i++) {
  64. switch (line.at(i)) {
  65. case 95:
  66. m += morse[0];
  67. sizes[i] = morse[0].size();
  68. break;
  69. case 46:
  70. m += morse[1];
  71. sizes[i] = morse[1].size();
  72. break;
  73. case 44:
  74. m += morse[2];
  75. sizes[i] = morse[2].size();
  76. break;
  77. case 63:
  78. m += morse[3];
  79. sizes[i] = morse[3].size();
  80. break;
  81. default:
  82. m+= morse[line.at(i)-61];
  83. sizes[i] = morse[line.at(i)-61].size();
  84. }
  85. }
  86. result = "";
  87. idx = 0;
  88. for (int i = line.size()-1; i >= 0; i--) {
  89. s = m.substr(idx, sizes[i]);
  90. //reverse(s.begin(), s.end());
  91. //printf("%d %d %s %c\n",idx, sizes[i],s.c_str(),char(toChar[s]));
  92. result += char(toChar[s]);
  93. idx+=sizes[i];
  94. }
  95. cout << result << endl;
  96. }
  97. return (EXIT_SUCCESS);
  98. }
  99. //AKADTOF_IBOETATUK_IJN
  100.