Source code for submission s803

Go to diff to previous submission

fs.cpp

  1. #include <iostream>
  2. #include <string>
  3. #include <cstdlib>
  4. #include <cstdio>
  5. #include <map>
  6. #include <cstring>
  7. #include <vector>
  8.  
  9. using namespace std;
  10. map<char, string> znaky;
  11.  
  12. void code(string &str, string &ret, vector<unsigned int> &cisla)
  13. {
  14. //vector<unsigned int> cisla;
  15. for (unsigned int i = 0; i<str.length(); i++)
  16. {
  17. ret.append(znaky[str.at(i)]);
  18. cisla.push_back(znaky[str.at(i)].length());
  19. }
  20. //cout<<ret<<" " ;
  21. for(vector<unsigned int>::iterator i = cisla.begin(); i != cisla.end(); i++) {
  22. //cout<<*i;
  23. }
  24. //cout<<endl;
  25.  
  26. }
  27. void decode(string &str, string &ret, vector<unsigned int> &cisla) {
  28.  
  29. unsigned int offset = 0;
  30. string kod;
  31. //for (vector<unsigned int>::iterator i = cisla.begin(); i != cisla.end(); i++)
  32. for (vector<unsigned int>::iterator i = cisla.end()-1; ; i--)
  33. {
  34. kod = str.substr(offset, *i);
  35. ////cout<<kod<<endl;
  36. for(map<char, string>::iterator k = znaky.begin(); k != znaky.end(); k++)
  37. {
  38. ////cout << k->second << " == " << kod <<endl;
  39. if ((k->second).length()==kod.length()&&(k->second).compare(kod)==0)
  40. {
  41. //cout << k->second << " == " << kod <<endl;
  42. //cout<<" => Znak: "<<(k->first)<<endl;
  43. char tmp[2] = {(k->first), '\0'};
  44. ret.append(tmp);
  45. break;
  46. }
  47. }
  48. //kod.empty();
  49. offset+=*i;
  50. if (i == cisla.begin())
  51. break;
  52. }
  53. //cout<<ret<<endl;
  54. }
  55.  
  56. int main ()
  57. {
  58. unsigned long n, x, y, pocet;
  59. n = x = y = pocet = 0;
  60. string input;/*
  61.  strcpy(znaky['A'], ".-");
  62.  strcpy(znaky['B'], "-...");
  63.  strcpy(znaky['C'], "-.-.");
  64.  strcpy(znaky['D'], "-..");
  65.  strcpy(znaky['E'], ".");
  66.  strcpy(znaky['F'], "..-.");
  67.  strcpy(znaky['G'], "--.");
  68.  strcpy(znaky['H'], "....");
  69.  strcpy(znaky['I'], "..");
  70.  strcpy(znaky['J'], ".---");
  71.  strcpy(znaky['K'], "-.-");
  72.  strcpy(znaky['L'], ".-..");
  73.  strcpy(znaky['M'], "--");
  74.  strcpy(znaky['N'], "-.");
  75.  strcpy(znaky['O'], "---");
  76.  strcpy(znaky['P'], ".--.");
  77.  strcpy(znaky['Q'], "--.-");
  78.  strcpy(znaky['R'], ".-.");
  79.  strcpy(znaky['S'], "...");
  80.  strcpy(znaky['T'], "...");
  81.  strcpy(znaky['U'], "..-");
  82.  strcpy(znaky['V'], "...-");
  83.  strcpy(znaky['W'], ".--");
  84.  strcpy(znaky['X'], "-..-");
  85.  strcpy(znaky['Y'], "-.--");
  86.  strcpy(znaky['Z'], "--..");
  87.  
  88.  strcpy(znaky['_'], "..--");
  89.  strcpy(znaky['.'], "---.");
  90.  strcpy(znaky[','], ".-.-");
  91.  strcpy(znaky['?'], "----");
  92. */
  93. znaky['A']= string(".-");
  94. znaky['B']= string("-...");
  95. znaky['C']= string("-.-.");
  96. znaky['D']= string("-..");
  97. znaky['E']= string(".");
  98. znaky['F']= string("..-.");
  99. znaky['G']= string("--.");
  100. znaky['H']= string("....");
  101. znaky['I']= string("..");
  102. znaky['J']= string(".---");
  103. znaky['K']= string("-.-");
  104. znaky['L']= string(".-..");
  105. znaky['M']= string("--");
  106. znaky['N']= string("-.");
  107. znaky['O']= string("---");
  108. znaky['P']= string(".--.");
  109. znaky['Q']= string("--.-");
  110. znaky['R']= string(".-.");
  111. znaky['S']= string("...");
  112. znaky['T']= string("-");
  113. znaky['U']= string("..-");
  114. znaky['V']= string("...-");
  115. znaky['W']= string(".--");
  116. znaky['X']= string("-..-");
  117. znaky['Y']= string("-.--");
  118. znaky['Z']= string("--..");
  119.  
  120. znaky['_']= string("..--");
  121. znaky['.']= string("---.");
  122. znaky[',']= string(".-.-");
  123. znaky['?']= string("----");
  124.  
  125. string ret;
  126. string ret2;
  127. vector<unsigned int> cisla;
  128. while (cin)
  129. {
  130. cin >> input;
  131. if (input.empty()) break;
  132. code(input, ret, cisla);
  133.  
  134. decode(ret, ret2, cisla);
  135. ret.clear();
  136. cout<<ret2<<endl;
  137. ret2.clear();
  138.  
  139. cisla.clear();
  140. input.clear();
  141. }
  142.  
  143. return 0;
  144. }
  145.  

Diff to submission s787

fs.cpp

--- c5.s787.cteam016.fs.cpp.0.fs.cpp
+++ c5.s803.cteam016.fs.cpp.0.fs.cpp
@@ -129,4 +129,5 @@
  {
   cin >> input;
+  if (input.empty()) break;
   code(input, ret, cisla);
   
@@ -137,4 +138,5 @@
 
   cisla.clear();
+  input.clear();
  }