Source code for submission s814

fs.cpp

  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <algorithm>
  4. #include <vector>
  5. #include <string>
  6. #include <sstream>
  7.  
  8. using namespace std;
  9.  
  10.  
  11. int main(){
  12. vector<string> morse;
  13. morse.push_back(".-");
  14. morse.push_back("-...");
  15. morse.push_back("-.-.");
  16. morse.push_back("-..");
  17. morse.push_back(".");
  18. morse.push_back("..-.");
  19. morse.push_back("--.");
  20. morse.push_back("....");
  21. morse.push_back("..");
  22. morse.push_back(".---");
  23. morse.push_back("-.-");
  24. morse.push_back(".-..");
  25. morse.push_back("--");
  26. morse.push_back("-.");
  27. morse.push_back("---");
  28. morse.push_back(".--.");
  29. morse.push_back("--.-");
  30. morse.push_back(".-.");
  31. morse.push_back("...");
  32. morse.push_back("-");
  33. morse.push_back("..-");
  34. morse.push_back("...-");
  35. morse.push_back(".--");
  36. morse.push_back("-..-");
  37. morse.push_back("-.--");
  38. morse.push_back("--..");
  39.  
  40. string msg;
  41. while(cin >> msg){
  42. vector<int> nums;
  43. stringstream codemsg;
  44. for(unsigned int i = 0;i<msg.length();i++){
  45. if(msg[i]=='_'){
  46. codemsg << "..--";
  47. nums.push_back(4);
  48. }else if(msg[i]==','){
  49. codemsg << ".-.-";
  50. nums.push_back(4);
  51. }else if(msg[i]=='.'){
  52. codemsg << "---.";
  53. nums.push_back(4);
  54. }else if(msg[i]=='?'){
  55. codemsg << "----";
  56. nums.push_back(4);
  57. }else {
  58. codemsg << morse[msg[i]-'A'];
  59. nums.push_back(morse[msg[i]-'A'].length());
  60. }
  61. }
  62. stringstream ss;
  63. msg = codemsg.str();
  64. for(int i = nums.size()-1;i>=0;i--){
  65. string code = msg.substr(0,nums[i]);
  66. msg = msg.substr(nums[i]);
  67. if(code=="..--"){
  68. ss << '_';
  69. }else if(code==".-.-"){
  70. ss << ',';
  71. }else if(code=="---."){
  72. ss << '.';
  73. }else if(code=="----"){
  74. ss << '?';
  75. }else {
  76. for(int j = 0; j < 26;j++){
  77. if(morse[j] == code){
  78. ss << (char)('A' + j);
  79. break;
  80. }
  81. }}
  82. }
  83. cout << ss.str() << endl;
  84.  
  85.  
  86. }
  87. }
  88.  
  89.  
  90.  
  91.  
  92.  
  93.