Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <algorithm>
- using namespace std;
- int LengthOfKey, HighOfTable, i, j, k;
- string IT, Key;
- char tabl[10][10];
- void SourceTabl() {
- k = 0;
- for (int i = 0; i < HighOfTable; i++) {
- for (int j = 0; j < LengthOfKey; j++) {
- tabl[i][j] = IT[k];
- cout << tabl[i][j] << " ";
- k++;
- }
- cout << endl;
- }
- }
- void mainFake() {
- setlocale(LC_ALL, "Russian");
- string v1;
- cout << "####################\n# 1) Зашифровать #\n# 2) Расшифровать #\n# 3) Выход #\n####################\n>";
- cin >> v1;
- int v;
- while (true) {
- try {
- v = stoi(v1);
- break;
- }
- catch (const invalid_argument e) {
- cout << "Ошибка! Введено не число!\nВведите число: ";
- cin >> v1;
- }
- }
- switch (v) {
- case 1:
- cout << "Введите исходный текст, который надо зашифровать - " << endl;
- cin.ignore();
- getline(cin, IT);
- IT.erase(remove(IT.begin(), IT.end(), ' '), IT.end());
- transform(IT.begin(), IT.end(), IT.begin(), tolower);
- cout << "Введите ключ для шифровки - ";
- cin >> Key;
- transform(Key.begin(), Key.end(), Key.begin(), tolower);
- LengthOfKey = Key.length();
- HighOfTable = IT.length() / LengthOfKey;
- cout << "Текст в исходной таблице шифрования: " << endl;
- SourceTabl();
- for (int i = 0; i < (LengthOfKey - 1); i++) {
- for (int j = i + 1; j < LengthOfKey; j++) {
- if (Key[i] > Key[j]) {
- swap(Key[i], Key[j]);
- for (int k = 0; k < HighOfTable; k++) {
- swap(tabl[k][i], tabl[k][j]);
- }
- }
- }
- }
- cout << "Перестановка столбцов:" << endl;
- for (int i = 0; i < HighOfTable; i++) {
- for (int j = 0; j < LengthOfKey; j++) {
- cout << tabl[i][j] << " ";
- }
- cout << endl;
- }
- IT = "";
- for (int j = 0; j < HighOfTable; j++) {
- for (int i = 0; i < LengthOfKey; i++) {
- IT = IT + tabl[j][i];
- }
- }
- cout << "Криптограмма:" << endl;
- cout << IT;
- cout << endl;
- mainFake();
- break;
- case 2:
- cout << "1" << endl;
- mainFake();
- break;
- case 3:
- break;
- default:
- cout << "Ошибка! Введено неверное число!" << endl;
- mainFake();
- break;
- }
- }
- int main() {
- mainFake();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement