Source code for submission s722

fs.cpp

  1. #include <cstdio>
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <vector>
  5. #include <set>
  6. #include <map>
  7. #include <string>
  8. #include <cmath>
  9. #include <cstdlib>
  10. #include <cstring>
  11. #include <sstream>
  12.  
  13. #include <stdio.h>
  14. #include <ctype.h>
  15. #include <math.h>
  16. #include <string.h>
  17. #include <stdlib.h>
  18.  
  19. using namespace std;
  20.  
  21. #define X first
  22. #define Y second
  23. #define MP make_pair
  24. #define PB push_back
  25. #define SZ size
  26.  
  27. char pismena[50] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '_', ',', '.', '?'};
  28. string mor[50] = {
  29. ".-", "-...", "-.-.", "-..", ".", "..-.", "--.",
  30. "....", "..", ".---", "-.-", ".-..", "--", "-.",
  31. "---", ".--.", "--.-", ".-.", "...", "-", "..-",
  32. "...-", ".--", "-..-", "-.--", "--..",
  33. "..--", ".-.-", "---.", "----"};
  34.  
  35. string vratMor(char pismeno) {
  36.  
  37. int pocet = strlen(pismena);
  38.  
  39. for (int i = 0; i < pocet; i++)
  40. if (pismeno == pismena[i])
  41. return mor[i];
  42.  
  43. return 0;
  44. }
  45.  
  46. int vratPocet(char pismeno) {
  47.  
  48. int pocet = strlen(pismena);
  49.  
  50. for (int i = 0; i < pocet; i++)
  51. if (pismeno == pismena[i])
  52. return mor[i].size();
  53.  
  54. return 0;
  55. }
  56.  
  57. char vratVys(string hladaj) {
  58.  
  59. int pocet = 50;
  60.  
  61. for (int i = 0; i < pocet; i++) {
  62. size_t aaa = hladaj.compare(mor[i]);
  63. if (aaa == 0)
  64. return pismena[i];
  65. }
  66.  
  67. return 0;
  68. }
  69.  
  70. int main(void) {
  71.  
  72. /*
  73. for (int i = 0; i < 26+4; i++) {
  74.  
  75. cout << pismena[i] << ": "<<mor[i] << endl;
  76.  
  77. }*/
  78.  
  79. string sifra = "";
  80. string vys = "";
  81. string vstup;
  82. vector <int> pocty;
  83.  
  84. while(1) {
  85. getline(cin, vstup);
  86.  
  87. if(!cin) return 0;
  88.  
  89. //cout << vstup.size() << "\n";
  90.  
  91. int pocet = vstup.size();
  92. for (int i = 0; i < pocet; i++) {
  93.  
  94. sifra += vratMor(vstup.at(i));
  95. pocty.push_back( vratPocet(vstup.at(i)));
  96.  
  97. }
  98.  
  99.  
  100. /*
  101. //printf("%c\n", pismena[2]);
  102. cout << sifra;
  103. int pocet2 = pocty.size();
  104. for(int i = 0; i < pocet2; i++)
  105. cout << pocty[i];
  106. */
  107.  
  108. int start = 0;
  109. int pocet2 = pocty.size();
  110. string hladaj;
  111. for (int i = pocet2-1; i >= 0; i--) {
  112.  
  113.  
  114. //cout << sifra.substr(start, pocty[i]) << "\n";
  115.  
  116. hladaj = sifra.substr(start, pocty[i]);
  117.  
  118. start = start + pocty[i];
  119. vys += vratVys(hladaj);
  120.  
  121. //sifra += vratMor(vstup.at(i));
  122. //pocty.push_back( vratPocet(vstup.at(i)));
  123.  
  124. }
  125. /*
  126. for (int i = pocet2-1; i >= 0; i--) {
  127. cout << pocty[i];
  128. }
  129. cout << "\n";
  130. */
  131. //cout << vstup << "\n";
  132. //cout << sifra << "\n";
  133. cout << vys << "\n";
  134. vys = "";
  135. sifra = "";
  136. pocty.clear();
  137.  
  138. //cout << vys << "\n";
  139.  
  140.  
  141.  
  142.  
  143. //printf("Ok\n");
  144. }
  145.  
  146. return 0;
  147. }
  148.  
  149.