Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.35 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. int LengthOfKey, HighOfTable, i, j, k;
  7. string IT, Key;
  8. char tabl[10][10];
  9.  
  10. void SourceTabl() {
  11.     k = 0;
  12.     for (int i = 0; i < HighOfTable; i++) {
  13.         for (int j = 0; j < LengthOfKey; j++) {
  14.             tabl[i][j] = IT[k];
  15.             cout << tabl[i][j] << " ";
  16.             k++;
  17.         }
  18.         cout << endl;
  19.     }
  20. }
  21.  
  22. void mainFake() {
  23.     setlocale(LC_ALL, "Russian");
  24.     string v1;
  25.     cout << "####################\n# 1) Зашифровать   #\n# 2) Расшифровать  #\n# 3) Выход         #\n####################\n>";
  26.     cin >> v1;
  27.     int v;
  28.     while (true) {
  29.         try {
  30.             v = stoi(v1);
  31.             break;
  32.         }
  33.         catch (const invalid_argument e) {
  34.             cout << "Ошибка! Введено не число!\nВведите число: ";
  35.             cin >> v1;
  36.         }
  37.     }
  38.     switch (v) {
  39.     case 1:
  40.         cout << "Введите исходный текст, который надо зашифровать - " << endl;
  41.         cin.ignore();
  42.         getline(cin, IT);
  43.         IT.erase(remove(IT.begin(), IT.end(), ' '), IT.end());
  44.         transform(IT.begin(), IT.end(), IT.begin(), tolower);
  45.         cout << "Введите ключ для шифровки - ";
  46.         cin >> Key;
  47.         transform(Key.begin(), Key.end(), Key.begin(), tolower);
  48.         LengthOfKey = Key.length();
  49.         HighOfTable = IT.length() / LengthOfKey;
  50.         cout << "Текст в исходной таблице шифрования: " << endl;
  51.         SourceTabl();
  52.         for (int i = 0; i < (LengthOfKey - 1); i++) {
  53.             for (int j = i + 1; j < LengthOfKey; j++) {
  54.                 if (Key[i] > Key[j]) {
  55.                     swap(Key[i], Key[j]);
  56.                     for (int k = 0; k < HighOfTable; k++) {
  57.                         swap(tabl[k][i], tabl[k][j]);
  58.                     }
  59.                 }
  60.             }
  61.         }
  62.         cout << "Перестановка столбцов:" << endl;
  63.         for (int i = 0; i < HighOfTable; i++) {
  64.             for (int j = 0; j < LengthOfKey; j++) {
  65.                 cout << tabl[i][j] << " ";
  66.             }
  67.             cout << endl;
  68.         }
  69.         IT = "";
  70.         for (int j = 0; j < HighOfTable; j++) {
  71.             for (int i = 0; i < LengthOfKey; i++) {
  72.                 IT = IT + tabl[j][i];
  73.             }
  74.         }
  75.         cout << "Криптограмма:" << endl;
  76.         cout << IT;
  77.         cout << endl;
  78.         mainFake();
  79.         break;
  80.     case 2:
  81.         cout << "1" << endl;
  82.         mainFake();
  83.         break;
  84.     case 3:
  85.         break;
  86.     default:
  87.         cout << "Ошибка! Введено неверное число!" << endl;
  88.         mainFake();
  89.         break;
  90.     }
  91. }
  92.  
  93. int main() {
  94.     mainFake();
  95.     return 0;
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement