fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. const int FIRST_SYMBOL = ' '; // первый символ
  5. const int SYMBOL_NUMBER = 95; // для простоты кодируем только английский алфавит
  6.  
  7. void GammaCoding( string &input, string &gamma, string &result )
  8. {
  9. result.clear();
  10. for( string::iterator i=input.begin(), j=gamma.begin(); i<input.end(); i++, j++ )
  11. {
  12. if(j==gamma.end()) j=gamma.begin();
  13. int Ti = *i - FIRST_SYMBOL;
  14. int Gi = *j - FIRST_SYMBOL;
  15. result.push_back(FIRST_SYMBOL+(Ti+Gi)%SYMBOL_NUMBER);
  16. }
  17. }
  18.  
  19. void GammaDecoding( string &input, string &gamma, string &result )
  20. {
  21. result.clear();
  22. for( string::iterator i=input.begin(), j=gamma.begin(); i<input.end(); i++, j++ )
  23. {
  24. if(j==gamma.end()) j=gamma.begin();
  25. int Ci = *i - FIRST_SYMBOL;
  26. int Gi = *j - FIRST_SYMBOL;
  27. result.push_back(FIRST_SYMBOL+(Ci-Gi+SYMBOL_NUMBER)%SYMBOL_NUMBER);
  28. }
  29. }
  30.  
  31. int main()
  32. {
  33. setlocale(LC_ALL, "rus");
  34. string str1, gamma, rez;
  35. string str1_v, gamma_v, rez_v;
  36. cout << "Введите исходное сообщение: ";
  37. cin >> str1;
  38. cout << "Введите гамму: ";
  39. cin >> gamma;
  40.  
  41. GammaCoding( str1, gamma, rez );
  42. cout << "Зашифрованное сообщение: ";
  43. cout << rez << endl;
  44.  
  45. GammaDecoding( rez, gamma, str1 );
  46. cout << "Проверка: ";
  47. cout << str1 << endl;
  48.  
  49. system("pause");
  50. return 0;
  51. }
Success #stdin #stdout #stderr 0.01s 5308KB
stdin
Standard input is empty
stdout
Введите исходное сообщение: Введите гамму: Зашифрованное сообщение: 
Проверка: 
stderr
sh: 1: pause: not found