#include <iostream>
#include <conio.h> //Для оформления программы
#include <windows.h>
#include <string> //Класс строки
#include <cstdlib>
#include <cmath>
void clrscr() {
system("cls");
}
using namespace std;
typedef unsigned int uni; //Вводим собственное обозначение типа данных (unsigned int = uni)
//Класс строки представленной в виде двочного кода для русского алфавита
//******************************************************************************
class cystr
{
public:
int dem; //размерность строки
int **s_c; //шифрованная строка в двоичном коде
int **open; //открытая строка в двоичном коде
static string alph; //статическая поле класса (алфавит) (string - тип данных)
cystr();
cystr(int **, int);
~cystr();
};
//******************************************************************************
//Описание статического поля класса и методов
//******************************************************************************
string cystr::alph = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзий\
клмнопрстуфхцчшщъыьэюя";
cystr::cystr() {}
cystr::cystr(int **p, int n)
{
dem = n;
s_c = new int *[n];
open = new int *[n];
for (int i = 0; i < n; i++)
{
s_c[i] = p[i];
open[i] = p[i];
}
}
cystr::~cystr()
{
dem = 0;
delete[] open;
delete[] s_c;
}
//******************************************************************************
//Класс ключа для шифровки и дешифровки
//******************************************************************************
class key
{
int dem;
int **s_k; // Строка ключа в двоичном коде
public:
key();
key(int **, int);
~key();
void enc(cystr &); //Метод шифрования строки (ничего не возвращает просто шифрует строку)
void dec(cystr &); //передаём в функцию значения по адресу
friend int ** encode(string);
};
//******************************************************************************
//Описание методов шифровани и дешифрования
//******************************************************************************
key::key(int **p, int n)
{
dem = n;
s_k = new int *[n];
for (int i = 0; i < n; i++)
s_k[i] = p[i];
}
key::~key()
{
dem = 0;
delete[] s_k;
}
void key::enc(cystr &toc)
{
for (int i = 0; i < dem; i++)
for (int j = 0; j < 6; j++)
toc.s_c[i][j] = (toc.open[i][j] + s_k[i][j]) % 2;
}
void key::dec(cystr &tod)
{
for (int i = 0; i < dem; i++)
for (int j = 0; j < 6; j++)
tod.open[i][j] = (tod.s_c[i][j] + s_k[i][j]) % 2;
}
//******************************************************************************
//Функциии кодирования в двоичный код строки и обратно
//******************************************************************************
int ** encode(string s)
{
char err[] = "Ошибка кодирования. Неизвестный символ";
CharToOem(err, err);
int *temp; // временная переменная для хранения промежуточных результатов
temp = new int[s.size()];
for (uni i = 0; i < s.size(); i++)
{
temp[i] = cystr::alph.find(s[i], 0); //temp - одномерный массив для хранения строки в виде десятичных чисел (от 0 до 63)
if (temp[i] == -1)
{
cout << err << endl;
system("pause");
abort();
}
}
int **p;
p = new int *[s.size()];
for (uni i = 0; i < s.size(); i++)
p[i] = new int[6];
for (uni i = 0; i < s.size(); i++)
for (int j = 0; j < 6; j++)
{
p[i][5 - j] = temp[i] % 2;
temp[i] = int(temp[i] / 2);
}
return p;
}
char * decode(int **p, int n)
{
int *temp;
temp = new int[n];
for (int i = 0; i < n; i++)
{
temp[i] = 0;
for (int j = 0; j < 6; j++)
temp[i] += p[i][j] * pow(2.0, (5 - j));
}
char * s;
s = new char[n + 1];
for (int i = 0; i < n; i++)
s[i] = cystr::alph[temp[i]];
s[n] = '\0';
return s;
}
//******************************************************************************
//Функция управления шифрованием (интерфейс)
//******************************************************************************
void action1()
{
char *p;
uni q;
char buf[256];
string s;
char instr[] = "Введите строку без пробелов";
char inkey1[] = "Введите ключ шифрования такой же длинны";
char encyp_suc[] = "Строка зашифрована";
char iner[] = "Ошибка при вводе. Привышена размерность";
CharToOem(iner, iner);
CharToOem(encyp_suc, encyp_suc);
CharToOem(inkey1, inkey1);
CharToOem(instr, instr);
cout << instr << endl;
cin >> buf;
OemToChar(buf, buf);
s = buf;
q = s.size();
cystr sc1(encode(s), s.size()); //sc1 - объект класса cystr
cout << inkey1 << endl;
cin >> buf;
OemToChar(buf, buf);
s = buf;
if (q != s.size())
{
cout << iner << endl;
system("pause");
abort();
}
key o(encode(s), s.size()); //o - объект класа key
o.enc(sc1);
cout << encyp_suc << endl;
p = decode(sc1.s_c, sc1.dem);
CharToOem(p, p);
cout << p << endl;
system("pause");
clrscr(); //очистка экрана
}
//******************************************************************************
//Функция управления дешифрованием (интерфейс)
//******************************************************************************
void action2()
{
uni q;
char *p;
char buf[256];
string s;
char decyp_suc[] = "Строка дешифрована";
char instr[] = "Введите строку без пробелов";
char inkey2[] = "Введите ключ дешифрования такой же длинны";
char iner[] = "Ошибка при вводе. Привышена размерность";
CharToOem(iner, iner);
CharToOem(inkey2, inkey2);
CharToOem(instr, instr);
CharToOem(decyp_suc, decyp_suc);
cout << instr << endl;
cin >> buf;
OemToChar(buf, buf);
s = buf;
q = s.size();
cystr sc1(encode(s), s.size());
cout << inkey2 << endl;
cin >> buf;
OemToChar(buf, buf);
s = buf;
if (q != s.size())
{
cout << iner << endl;
system("pause");
abort();
}
key o(encode(s), s.size());
o.dec(sc1);
cout << decyp_suc << endl;
p = decode(sc1.open, sc1.dem);
CharToOem(p, p);
cout << p << endl;
system("pause");
clrscr();
}
//******************************************************************************
//Главная функция
//******************************************************************************
int main()
{
int q;
char buf[256];
char welcome[] = "Вас приветствует программа КРИПТО 0.0.1 (Шифр Вернама)";
char qes[] = "Выбирите действие\n1 - Шифрование\n2 - Дешифрование\n3 - Выход";
char er[] = "Неверно";
CharToOem(welcome, welcome);
CharToOem(qes, qes);
CharToOem(er, er);
cout << welcome << endl << endl;
while (q != '3')
{
cout << qes << endl;
cin >> q;
getchar();
switch (q)
{
case 1: action1(); break;
case 2: action2(); break;
case 3: return 0;
default: cout << er << endl; system("pause"); clrscr();
}
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y29uaW8uaD4gICAgIC8v0JTQu9GPINC+0YTQvtGA0LzQu9C10L3QuNGPINC/0YDQvtCz0YDQsNC80LzRiwojaW5jbHVkZSA8d2luZG93cy5oPgojaW5jbHVkZSA8c3RyaW5nPiAgLy/QmtC70LDRgdGBINGB0YLRgNC+0LrQuAojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGNtYXRoPgp2b2lkIGNscnNjcigpIHsKCXN5c3RlbSgiY2xzIik7Cn0KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdW5pOyAgIC8v0JLQstC+0LTQuNC8INGB0L7QsdGB0YLQstC10L3QvdC+0LUg0L7QsdC+0LfQvdCw0YfQtdC90LjQtSDRgtC40L/QsCDQtNCw0L3QvdGL0YUgKHVuc2lnbmVkIGludCA9IHVuaSkKCgkJCQkJCQkvL9Ca0LvQsNGB0YEg0YHRgtGA0L7QutC4INC/0YDQtdC00YHRgtCw0LLQu9C10L3QvdC+0Lkg0LIg0LLQuNC00LUg0LTQstC+0YfQvdC+0LPQviDQutC+0LTQsCDQtNC70Y8g0YDRg9GB0YHQutC+0LPQviDQsNC70YTQsNCy0LjRgtCwCgkJCQkJCQkvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpjbGFzcyBjeXN0cgp7CnB1YmxpYzoKCWludCBkZW07ICAgIC8v0YDQsNC30LzQtdGA0L3QvtGB0YLRjCDRgdGC0YDQvtC60LgKCWludCAqKnNfYzsgIC8v0YjQuNGE0YDQvtCy0LDQvdC90LDRjyDRgdGC0YDQvtC60LAg0LIg0LTQstC+0LjRh9C90L7QvCDQutC+0LTQtQoJaW50ICoqb3BlbjsgLy/QvtGC0LrRgNGL0YLQsNGPINGB0YLRgNC+0LrQsCDQsiDQtNCy0L7QuNGH0L3QvtC8INC60L7QtNC1CglzdGF0aWMgc3RyaW5nIGFscGg7IC8v0YHRgtCw0YLQuNGH0LXRgdC60LDRjyDQv9C+0LvQtSDQutC70LDRgdGB0LAgKNCw0LvRhNCw0LLQuNGCKSAoc3RyaW5nIC0g0YLQuNC/INC00LDQvdC90YvRhSkKCWN5c3RyKCk7CgljeXN0cihpbnQgKiosIGludCk7Cgl+Y3lzdHIoKTsKfTsKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCi8v0J7Qv9C40YHQsNC90LjQtSDRgdGC0LDRgtC40YfQtdGB0LrQvtCz0L4g0L/QvtC70Y8g0LrQu9Cw0YHRgdCwINC4INC80LXRgtC+0LTQvtCyCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCnN0cmluZyBjeXN0cjo6YWxwaCA9ICLQkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv0LDQsdCy0LPQtNC10LbQt9C40LlcCtC60LvQvNC90L7Qv9GA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjtGPIjsKY3lzdHI6OmN5c3RyKCkge30KY3lzdHI6OmN5c3RyKGludCAqKnAsIGludCBuKQp7CglkZW0gPSBuOwoJc19jID0gbmV3IGludCAqW25dOwoJb3BlbiA9IG5ldyBpbnQgKltuXTsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJewoJCXNfY1tpXSA9IHBbaV07CgkJb3BlbltpXSA9IHBbaV07Cgl9Cn0KY3lzdHI6On5jeXN0cigpCnsKCWRlbSA9IDA7CglkZWxldGVbXSBvcGVuOwoJZGVsZXRlW10gc19jOwp9Ci8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgovL9Ca0LvQsNGB0YEg0LrQu9GO0YfQsCDQtNC70Y8g0YjQuNGE0YDQvtCy0LrQuCDQuCDQtNC10YjQuNGE0YDQvtCy0LrQuAovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpjbGFzcyBrZXkKewoJaW50IGRlbTsKCWludCAqKnNfazsgIC8vINCh0YLRgNC+0LrQsCDQutC70Y7Rh9CwINCyINC00LLQvtC40YfQvdC+0Lwg0LrQvtC00LUKcHVibGljOgoJa2V5KCk7CglrZXkoaW50ICoqLCBpbnQpOwoJfmtleSgpOwoJdm9pZCBlbmMoY3lzdHIgJik7ICAvL9Cc0LXRgtC+0LQg0YjQuNGE0YDQvtCy0LDQvdC40Y8g0YHRgtGA0L7QutC4ICjQvdC40YfQtdCz0L4g0L3QtSDQstC+0LfQstGA0LDRidCw0LXRgiDQv9GA0L7RgdGC0L4g0YjQuNGE0YDRg9C10YIg0YHRgtGA0L7QutGDKQoJdm9pZCBkZWMoY3lzdHIgJik7ICAvL9C/0LXRgNC10LTQsNGR0Lwg0LIg0YTRg9C90LrRhtC40Y4g0LfQvdCw0YfQtdC90LjRjyDQv9C+INCw0LTRgNC10YHRgwoJZnJpZW5kIGludCAqKiBlbmNvZGUoc3RyaW5nKTsKfTsKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCi8v0J7Qv9C40YHQsNC90LjQtSDQvNC10YLQvtC00L7QsiDRiNC40YTRgNC+0LLQsNC90Lgg0Lgg0LTQtdGI0LjRhNGA0L7QstCw0L3QuNGPCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmtleTo6a2V5KGludCAqKnAsIGludCBuKQp7CglkZW0gPSBuOwoJc19rID0gbmV3IGludCAqW25dOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCgkJc19rW2ldID0gcFtpXTsKfQprZXk6On5rZXkoKQp7CglkZW0gPSAwOwoJZGVsZXRlW10gc19rOwp9CnZvaWQga2V5OjplbmMoY3lzdHIgJnRvYykKewoJZm9yIChpbnQgaSA9IDA7IGkgPCBkZW07IGkrKykKCQlmb3IgKGludCBqID0gMDsgaiA8IDY7IGorKykKCQkJdG9jLnNfY1tpXVtqXSA9ICh0b2Mub3BlbltpXVtqXSArIHNfa1tpXVtqXSkgJSAyOwp9CnZvaWQga2V5OjpkZWMoY3lzdHIgJnRvZCkKewoJZm9yIChpbnQgaSA9IDA7IGkgPCBkZW07IGkrKykKCQlmb3IgKGludCBqID0gMDsgaiA8IDY7IGorKykKCQkJdG9kLm9wZW5baV1bal0gPSAodG9kLnNfY1tpXVtqXSArIHNfa1tpXVtqXSkgJSAyOwp9Ci8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgovL9Ck0YPQvdC60YbQuNC40Lgg0LrQvtC00LjRgNC+0LLQsNC90LjRjyDQsiDQtNCy0L7QuNGH0L3Ri9C5INC60L7QtCDRgdGC0YDQvtC60Lgg0Lgg0L7QsdGA0LDRgtC90L4KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKaW50ICoqIGVuY29kZShzdHJpbmcgcykKewoJY2hhciBlcnJbXSA9ICLQntGI0LjQsdC60LAg0LrQvtC00LjRgNC+0LLQsNC90LjRjy4g0J3QtdC40LfQstC10YHRgtC90YvQuSDRgdC40LzQstC+0LsiOwoJQ2hhclRvT2VtKGVyciwgZXJyKTsKCWludCAqdGVtcDsgLy8g0LLRgNC10LzQtdC90L3QsNGPINC/0LXRgNC10LzQtdC90L3QsNGPINC00LvRjyDRhdGA0LDQvdC10L3QuNGPINC/0YDQvtC80LXQttGD0YLQvtGH0L3Ri9GFINGA0LXQt9GD0LvRjNGC0LDRgtC+0LIKCXRlbXAgPSBuZXcgaW50W3Muc2l6ZSgpXTsKCWZvciAodW5pIGkgPSAwOyBpIDwgcy5zaXplKCk7IGkrKykKCXsKCQl0ZW1wW2ldID0gY3lzdHI6OmFscGguZmluZChzW2ldLCAwKTsgLy90ZW1wIC0g0L7QtNC90L7QvNC10YDQvdGL0Lkg0LzQsNGB0YHQuNCyINC00LvRjyDRhdGA0LDQvdC10L3QuNGPINGB0YLRgNC+0LrQuCDQsiDQstC40LTQtSDQtNC10YHRj9GC0LjRh9C90YvRhSDRh9C40YHQtdC7ICjQvtGCIDAg0LTQviA2MykKCQlpZiAodGVtcFtpXSA9PSAtMSkKCQl7CgkJCWNvdXQgPDwgZXJyIDw8IGVuZGw7CgkJCXN5c3RlbSgicGF1c2UiKTsKCQkJYWJvcnQoKTsKCQl9Cgl9CglpbnQgKipwOwoJcCA9IG5ldyBpbnQgKltzLnNpemUoKV07Cglmb3IgKHVuaSBpID0gMDsgaSA8IHMuc2l6ZSgpOyBpKyspCgkJcFtpXSA9IG5ldyBpbnRbNl07Cglmb3IgKHVuaSBpID0gMDsgaSA8IHMuc2l6ZSgpOyBpKyspCgkJZm9yIChpbnQgaiA9IDA7IGogPCA2OyBqKyspCgkJewoJCQlwW2ldWzUgLSBqXSA9IHRlbXBbaV0gJSAyOwoJCQl0ZW1wW2ldID0gaW50KHRlbXBbaV0gLyAyKTsKCQl9CglyZXR1cm4gcDsKfQoKY2hhciAqIGRlY29kZShpbnQgKipwLCBpbnQgbikKewoJaW50ICp0ZW1wOwoJdGVtcCA9IG5ldyBpbnRbbl07CgoJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCgl7CgkJdGVtcFtpXSA9IDA7CgkJZm9yIChpbnQgaiA9IDA7IGogPCA2OyBqKyspCgkJCXRlbXBbaV0gKz0gcFtpXVtqXSAqIHBvdygyLjAsICg1IC0gaikpOwoJfQoKCWNoYXIgKiBzOwoJcyA9IG5ldyBjaGFyW24gKyAxXTsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJCXNbaV0gPSBjeXN0cjo6YWxwaFt0ZW1wW2ldXTsKCXNbbl0gPSAnXDAnOwoJcmV0dXJuIHM7Cn0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCi8v0KTRg9C90LrRhtC40Y8g0YPQv9GA0LDQstC70LXQvdC40Y8g0YjQuNGE0YDQvtCy0LDQvdC40LXQvCAo0LjQvdGC0LXRgNGE0LXQudGBKQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgp2b2lkIGFjdGlvbjEoKQp7CgljaGFyICpwOwoJdW5pIHE7CgljaGFyIGJ1ZlsyNTZdOwoJc3RyaW5nIHM7CgljaGFyIGluc3RyW10gPSAi0JLQstC10LTQuNGC0LUg0YHRgtGA0L7QutGDINCx0LXQtyDQv9GA0L7QsdC10LvQvtCyIjsKCWNoYXIgaW5rZXkxW10gPSAi0JLQstC10LTQuNGC0LUg0LrQu9GO0Ycg0YjQuNGE0YDQvtCy0LDQvdC40Y8g0YLQsNC60L7QuSDQttC1INC00LvQuNC90L3RiyI7CgljaGFyIGVuY3lwX3N1Y1tdID0gItCh0YLRgNC+0LrQsCDQt9Cw0YjQuNGE0YDQvtCy0LDQvdCwIjsKCWNoYXIgaW5lcltdID0gItCe0YjQuNCx0LrQsCDQv9GA0Lgg0LLQstC+0LTQtS4g0J/RgNC40LLRi9GI0LXQvdCwINGA0LDQt9C80LXRgNC90L7RgdGC0YwiOwoJQ2hhclRvT2VtKGluZXIsIGluZXIpOwoJQ2hhclRvT2VtKGVuY3lwX3N1YywgZW5jeXBfc3VjKTsKCUNoYXJUb09lbShpbmtleTEsIGlua2V5MSk7CglDaGFyVG9PZW0oaW5zdHIsIGluc3RyKTsKCWNvdXQgPDwgaW5zdHIgPDwgZW5kbDsKCWNpbiA+PiBidWY7CglPZW1Ub0NoYXIoYnVmLCBidWYpOwoJcyA9IGJ1ZjsKCXEgPSBzLnNpemUoKTsKCWN5c3RyIHNjMShlbmNvZGUocyksIHMuc2l6ZSgpKTsgICAvL3NjMSAtINC+0LHRitC10LrRgiDQutC70LDRgdGB0LAgIGN5c3RyCgljb3V0IDw8IGlua2V5MSA8PCBlbmRsOwoJY2luID4+IGJ1ZjsKCU9lbVRvQ2hhcihidWYsIGJ1Zik7CglzID0gYnVmOwoJaWYgKHEgIT0gcy5zaXplKCkpCgl7CgkJY291dCA8PCBpbmVyIDw8IGVuZGw7CgkJc3lzdGVtKCJwYXVzZSIpOwoJCWFib3J0KCk7Cgl9CglrZXkgbyhlbmNvZGUocyksIHMuc2l6ZSgpKTsgIC8vbyAtINC+0LHRitC10LrRgiDQutC70LDRgdCwIGtleQoJby5lbmMoc2MxKTsKCWNvdXQgPDwgZW5jeXBfc3VjIDw8IGVuZGw7CglwID0gZGVjb2RlKHNjMS5zX2MsIHNjMS5kZW0pOwoJQ2hhclRvT2VtKHAsIHApOwoJY291dCA8PCBwIDw8IGVuZGw7CglzeXN0ZW0oInBhdXNlIik7CgljbHJzY3IoKTsgIC8v0L7Rh9C40YHRgtC60LAg0Y3QutGA0LDQvdCwCn0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCi8v0KTRg9C90LrRhtC40Y8g0YPQv9GA0LDQstC70LXQvdC40Y8g0LTQtdGI0LjRhNGA0L7QstCw0L3QuNC10LwgKNC40L3RgtC10YDRhNC10LnRgSkKLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKdm9pZCBhY3Rpb24yKCkKewoJdW5pIHE7CgljaGFyICpwOwoJY2hhciBidWZbMjU2XTsKCXN0cmluZyBzOwoJY2hhciBkZWN5cF9zdWNbXSA9ICLQodGC0YDQvtC60LAg0LTQtdGI0LjRhNGA0L7QstCw0L3QsCI7CgljaGFyIGluc3RyW10gPSAi0JLQstC10LTQuNGC0LUg0YHRgtGA0L7QutGDINCx0LXQtyDQv9GA0L7QsdC10LvQvtCyIjsKCWNoYXIgaW5rZXkyW10gPSAi0JLQstC10LTQuNGC0LUg0LrQu9GO0Ycg0LTQtdGI0LjRhNGA0L7QstCw0L3QuNGPINGC0LDQutC+0Lkg0LbQtSDQtNC70LjQvdC90YsiOwoJY2hhciBpbmVyW10gPSAi0J7RiNC40LHQutCwINC/0YDQuCDQstCy0L7QtNC1LiDQn9GA0LjQstGL0YjQtdC90LAg0YDQsNC30LzQtdGA0L3QvtGB0YLRjCI7CglDaGFyVG9PZW0oaW5lciwgaW5lcik7CglDaGFyVG9PZW0oaW5rZXkyLCBpbmtleTIpOwoJQ2hhclRvT2VtKGluc3RyLCBpbnN0cik7CglDaGFyVG9PZW0oZGVjeXBfc3VjLCBkZWN5cF9zdWMpOwoJY291dCA8PCBpbnN0ciA8PCBlbmRsOwoJY2luID4+IGJ1ZjsKCU9lbVRvQ2hhcihidWYsIGJ1Zik7CglzID0gYnVmOwoJcSA9IHMuc2l6ZSgpOwoJY3lzdHIgc2MxKGVuY29kZShzKSwgcy5zaXplKCkpOwoJY291dCA8PCBpbmtleTIgPDwgZW5kbDsKCWNpbiA+PiBidWY7CglPZW1Ub0NoYXIoYnVmLCBidWYpOwoJcyA9IGJ1ZjsKCWlmIChxICE9IHMuc2l6ZSgpKQoJewoJCWNvdXQgPDwgaW5lciA8PCBlbmRsOwoJCXN5c3RlbSgicGF1c2UiKTsKCQlhYm9ydCgpOwoJfQoJa2V5IG8oZW5jb2RlKHMpLCBzLnNpemUoKSk7CglvLmRlYyhzYzEpOwoJY291dCA8PCBkZWN5cF9zdWMgPDwgZW5kbDsKCXAgPSBkZWNvZGUoc2MxLm9wZW4sIHNjMS5kZW0pOwoJQ2hhclRvT2VtKHAsIHApOwoJY291dCA8PCBwIDw8IGVuZGw7CglzeXN0ZW0oInBhdXNlIik7CgljbHJzY3IoKTsKfQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKLy/Qk9C70LDQstC90LDRjyDRhNGD0L3QutGG0LjRjwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgppbnQgbWFpbigpCnsKCWludCBxOwoJY2hhciBidWZbMjU2XTsKCWNoYXIgd2VsY29tZVtdID0gItCS0LDRgSDQv9GA0LjQstC10YLRgdGC0LLRg9C10YIg0L/RgNC+0LPRgNCw0LzQvNCwINCa0KDQmNCf0KLQniAwLjAuMSAo0KjQuNGE0YAg0JLQtdGA0L3QsNC80LApIjsKCWNoYXIgcWVzW10gPSAi0JLRi9Cx0LjRgNC40YLQtSDQtNC10LnRgdGC0LLQuNC1XG4xIC0g0KjQuNGE0YDQvtCy0LDQvdC40LVcbjIgLSDQlNC10YjQuNGE0YDQvtCy0LDQvdC40LVcbjMgLSDQktGL0YXQvtC0IjsKCWNoYXIgZXJbXSA9ICLQndC10LLQtdGA0L3QviI7CglDaGFyVG9PZW0od2VsY29tZSwgd2VsY29tZSk7CglDaGFyVG9PZW0ocWVzLCBxZXMpOwoJQ2hhclRvT2VtKGVyLCBlcik7Cgljb3V0IDw8IHdlbGNvbWUgPDwgZW5kbCA8PCBlbmRsOwoJd2hpbGUgKHEgIT0gJzMnKQoJewoJCWNvdXQgPDwgcWVzIDw8IGVuZGw7CgkJY2luID4+IHE7CgkJZ2V0Y2hhcigpOwoJCXN3aXRjaCAocSkKCQl7CgkJY2FzZSAxOiBhY3Rpb24xKCk7IGJyZWFrOwoJCWNhc2UgMjogYWN0aW9uMigpOyBicmVhazsKCQljYXNlIDM6IHJldHVybiAwOwoJCWRlZmF1bHQ6IGNvdXQgPDwgZXIgPDwgZW5kbDsgc3lzdGVtKCJwYXVzZSIpOyBjbHJzY3IoKTsKCQl9Cgl9Cn0=
Main.java:1: error: illegal character: '#'
#include <iostream>
^
Main.java:1: error: class, interface, or enum expected
#include <iostream>
^
Main.java:2: error: illegal character: '#'
#include <conio.h> //??? ?????????? ?????????
^
Main.java:3: error: illegal character: '#'
#include <windows.h>
^
Main.java:4: error: illegal character: '#'
#include <string> //????? ??????
^
Main.java:5: error: illegal character: '#'
#include <cstdlib>
^
Main.java:6: error: illegal character: '#'
#include <cmath>
^
Main.java:9: error: class, interface, or enum expected
}
^
Main.java:11: error: class, interface, or enum expected
typedef unsigned int uni; //?????? ??????????? ??????????? ???? ?????? (unsigned int = uni)
^
Main.java:17: error: illegal start of type
public:
^
Main.java:17: error: ';' expected
public:
^
Main.java:18: error: <identifier> expected
int dem; //??????????? ??????
^
Main.java:19: error: <identifier> expected
int **s_c; //??????????? ?????? ? ???????? ????
^
Main.java:19: error: illegal start of type
int **s_c; //??????????? ?????? ? ???????? ????
^
Main.java:20: error: <identifier> expected
int **open; //???????? ?????? ? ???????? ????
^
Main.java:20: error: illegal start of type
int **open; //???????? ?????? ? ???????? ????
^
Main.java:23: error: <identifier> expected
cystr(int **, int);
^
Main.java:23: error: ';' expected
cystr(int **, int);
^
Main.java:23: error: illegal start of type
cystr(int **, int);
^
Main.java:23: error: <identifier> expected
cystr(int **, int);
^
Main.java:23: error: ';' expected
cystr(int **, int);
^
Main.java:24: error: illegal start of type
~cystr();
^
Main.java:24: error: ';' expected
~cystr();
^
Main.java:24: error: illegal start of type
~cystr();
^
Main.java:24: error: <identifier> expected
~cystr();
^
Main.java:30: error: class, interface, or enum expected
string cystr::alph = "??????????????????????????????????????????\
^
Main.java:30: error: illegal escape character
string cystr::alph = "??????????????????????????????????????????\
^
Main.java:30: error: unclosed string literal
string cystr::alph = "??????????????????????????????????????????\
^
Main.java:31: error: unclosed string literal
??????????????????????";
^
Main.java:36: error: class, interface, or enum expected
s_c = new int *[n];
^
Main.java:37: error: class, interface, or enum expected
open = new int *[n];
^
Main.java:38: error: class, interface, or enum expected
for (int i = 0; i < n; i++)
^
Main.java:38: error: class, interface, or enum expected
for (int i = 0; i < n; i++)
^
Main.java:38: error: class, interface, or enum expected
for (int i = 0; i < n; i++)
^
Main.java:41: error: class, interface, or enum expected
open[i] = p[i];
^
Main.java:42: error: class, interface, or enum expected
}
^
Main.java:47: error: class, interface, or enum expected
delete[] open;
^
Main.java:48: error: class, interface, or enum expected
delete[] s_c;
^
Main.java:49: error: class, interface, or enum expected
}
^
Main.java:57: error: <identifier> expected
int **s_k; // ?????? ????? ? ???????? ????
^
Main.java:57: error: illegal start of type
int **s_k; // ?????? ????? ? ???????? ????
^
Main.java:58: error: illegal start of type
public:
^
Main.java:58: error: ';' expected
public:
^
Main.java:59: error: illegal start of type
key();
^
Main.java:59: error: <identifier> expected
key();
^
Main.java:60: error: <identifier> expected
key(int **, int);
^
Main.java:60: error: ';' expected
key(int **, int);
^
Main.java:60: error: illegal start of type
key(int **, int);
^
Main.java:60: error: <identifier> expected
key(int **, int);
^
Main.java:60: error: ';' expected
key(int **, int);
^
Main.java:61: error: illegal start of type
~key();
^
Main.java:61: error: ';' expected
~key();
^
Main.java:61: error: illegal start of type
~key();
^
Main.java:61: error: <identifier> expected
~key();
^
Main.java:62: error: <identifier> expected
void enc(cystr &); //????? ?????????? ?????? (?????? ?? ?????????? ?????? ??????? ??????)
^
Main.java:62: error: ';' expected
void enc(cystr &); //????? ?????????? ?????? (?????? ?? ?????????? ?????? ??????? ??????)
^
Main.java:63: error: <identifier> expected
void dec(cystr &); //???????? ? ??????? ???????? ?? ??????
^
Main.java:63: error: ';' expected
void dec(cystr &); //???????? ? ??????? ???????? ?? ??????
^
Main.java:64: error: <identifier> expected
friend int ** encode(string);
^
Main.java:64: error: illegal start of type
friend int ** encode(string);
^
Main.java:64: error: <identifier> expected
friend int ** encode(string);
^
Main.java:64: error: ';' expected
friend int ** encode(string);
^
Main.java:64: error: illegal start of type
friend int ** encode(string);
^
Main.java:64: error: ';' expected
friend int ** encode(string);
^
Main.java:70: error: class, interface, or enum expected
key::key(int **p, int n)
^
Main.java:73: error: class, interface, or enum expected
s_k = new int *[n];
^
Main.java:74: error: class, interface, or enum expected
for (int i = 0; i < n; i++)
^
Main.java:74: error: class, interface, or enum expected
for (int i = 0; i < n; i++)
^
Main.java:74: error: class, interface, or enum expected
for (int i = 0; i < n; i++)
^
Main.java:76: error: class, interface, or enum expected
}
^
Main.java:80: error: class, interface, or enum expected
delete[] s_k;
^
Main.java:81: error: class, interface, or enum expected
}
^
Main.java:84: error: class, interface, or enum expected
for (int i = 0; i < dem; i++)
^
Main.java:84: error: class, interface, or enum expected
for (int i = 0; i < dem; i++)
^
Main.java:85: error: class, interface, or enum expected
for (int j = 0; j < 6; j++)
^
Main.java:85: error: class, interface, or enum expected
for (int j = 0; j < 6; j++)
^
Main.java:87: error: class, interface, or enum expected
}
^
Main.java:90: error: class, interface, or enum expected
for (int i = 0; i < dem; i++)
^
Main.java:90: error: class, interface, or enum expected
for (int i = 0; i < dem; i++)
^
Main.java:91: error: class, interface, or enum expected
for (int j = 0; j < 6; j++)
^
Main.java:91: error: class, interface, or enum expected
for (int j = 0; j < 6; j++)
^
Main.java:93: error: class, interface, or enum expected
}
^
Main.java:101: error: class, interface, or enum expected
CharToOem(err, err);
^
Main.java:102: error: class, interface, or enum expected
int *temp; // ????????? ?????????? ??? ???????? ????????????? ???????????
^
Main.java:103: error: class, interface, or enum expected
temp = new int[s.size()];
^
Main.java:104: error: class, interface, or enum expected
for (uni i = 0; i < s.size(); i++)
^
Main.java:104: error: class, interface, or enum expected
for (uni i = 0; i < s.size(); i++)
^
Main.java:104: error: class, interface, or enum expected
for (uni i = 0; i < s.size(); i++)
^
Main.java:107: error: class, interface, or enum expected
if (temp[i] == -1)
^
Main.java:110: error: class, interface, or enum expected
system("pause");
^
Main.java:111: error: class, interface, or enum expected
abort();
^
Main.java:112: error: class, interface, or enum expected
}
^
Main.java:115: error: class, interface, or enum expected
p = new int *[s.size()];
^
Main.java:116: error: class, interface, or enum expected
for (uni i = 0; i < s.size(); i++)
^
Main.java:116: error: class, interface, or enum expected
for (uni i = 0; i < s.size(); i++)
^
Main.java:116: error: class, interface, or enum expected
for (uni i = 0; i < s.size(); i++)
^
Main.java:118: error: class, interface, or enum expected
for (uni i = 0; i < s.size(); i++)
^
Main.java:118: error: class, interface, or enum expected
for (uni i = 0; i < s.size(); i++)
^
Main.java:118: error: class, interface, or enum expected
for (uni i = 0; i < s.size(); i++)
^
Main.java:119: error: class, interface, or enum expected
for (int j = 0; j < 6; j++)
^
100 errors