fork download
  1. #include <iostream>
  2. #include <conio.h> //Для оформления программы
  3. #include <windows.h>
  4. #include <string> //Класс строки
  5. #include <cstdlib>
  6. #include <cmath>
  7. void clrscr() {
  8. system("cls");
  9. }
  10. using namespace std;
  11. typedef unsigned int uni; //Вводим собственное обозначение типа данных (unsigned int = uni)
  12.  
  13. //Класс строки представленной в виде двочного кода для русского алфавита
  14. //******************************************************************************
  15. class cystr
  16. {
  17. public:
  18. int dem; //размерность строки
  19. int **s_c; //шифрованная строка в двоичном коде
  20. int **open; //открытая строка в двоичном коде
  21. static string alph; //статическая поле класса (алфавит) (string - тип данных)
  22. cystr();
  23. cystr(int **, int);
  24. ~cystr();
  25. };
  26. //******************************************************************************
  27.  
  28. //Описание статического поля класса и методов
  29. //******************************************************************************
  30. string cystr::alph = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзий\
  31. клмнопрстуфхцчшщъыьэюя";
  32. cystr::cystr() {}
  33. cystr::cystr(int **p, int n)
  34. {
  35. dem = n;
  36. s_c = new int *[n];
  37. open = new int *[n];
  38. for (int i = 0; i < n; i++)
  39. {
  40. s_c[i] = p[i];
  41. open[i] = p[i];
  42. }
  43. }
  44. cystr::~cystr()
  45. {
  46. dem = 0;
  47. delete[] open;
  48. delete[] s_c;
  49. }
  50. //******************************************************************************
  51.  
  52. //Класс ключа для шифровки и дешифровки
  53. //******************************************************************************
  54. class key
  55. {
  56. int dem;
  57. int **s_k; // Строка ключа в двоичном коде
  58. public:
  59. key();
  60. key(int **, int);
  61. ~key();
  62. void enc(cystr &); //Метод шифрования строки (ничего не возвращает просто шифрует строку)
  63. void dec(cystr &); //передаём в функцию значения по адресу
  64. friend int ** encode(string);
  65. };
  66. //******************************************************************************
  67.  
  68. //Описание методов шифровани и дешифрования
  69. //******************************************************************************
  70. key::key(int **p, int n)
  71. {
  72. dem = n;
  73. s_k = new int *[n];
  74. for (int i = 0; i < n; i++)
  75. s_k[i] = p[i];
  76. }
  77. key::~key()
  78. {
  79. dem = 0;
  80. delete[] s_k;
  81. }
  82. void key::enc(cystr &toc)
  83. {
  84. for (int i = 0; i < dem; i++)
  85. for (int j = 0; j < 6; j++)
  86. toc.s_c[i][j] = (toc.open[i][j] + s_k[i][j]) % 2;
  87. }
  88. void key::dec(cystr &tod)
  89. {
  90. for (int i = 0; i < dem; i++)
  91. for (int j = 0; j < 6; j++)
  92. tod.open[i][j] = (tod.s_c[i][j] + s_k[i][j]) % 2;
  93. }
  94. //******************************************************************************
  95.  
  96. //Функциии кодирования в двоичный код строки и обратно
  97. //******************************************************************************
  98. int ** encode(string s)
  99. {
  100. char err[] = "Ошибка кодирования. Неизвестный символ";
  101. CharToOem(err, err);
  102. int *temp; // временная переменная для хранения промежуточных результатов
  103. temp = new int[s.size()];
  104. for (uni i = 0; i < s.size(); i++)
  105. {
  106. temp[i] = cystr::alph.find(s[i], 0); //temp - одномерный массив для хранения строки в виде десятичных чисел (от 0 до 63)
  107. if (temp[i] == -1)
  108. {
  109. cout << err << endl;
  110. system("pause");
  111. abort();
  112. }
  113. }
  114. int **p;
  115. p = new int *[s.size()];
  116. for (uni i = 0; i < s.size(); i++)
  117. p[i] = new int[6];
  118. for (uni i = 0; i < s.size(); i++)
  119. for (int j = 0; j < 6; j++)
  120. {
  121. p[i][5 - j] = temp[i] % 2;
  122. temp[i] = int(temp[i] / 2);
  123. }
  124. return p;
  125. }
  126.  
  127. char * decode(int **p, int n)
  128. {
  129. int *temp;
  130. temp = new int[n];
  131.  
  132. for (int i = 0; i < n; i++)
  133. {
  134. temp[i] = 0;
  135. for (int j = 0; j < 6; j++)
  136. temp[i] += p[i][j] * pow(2.0, (5 - j));
  137. }
  138.  
  139. char * s;
  140. s = new char[n + 1];
  141. for (int i = 0; i < n; i++)
  142. s[i] = cystr::alph[temp[i]];
  143. s[n] = '\0';
  144. return s;
  145. }
  146. //******************************************************************************
  147.  
  148. //Функция управления шифрованием (интерфейс)
  149. //******************************************************************************
  150. void action1()
  151. {
  152. char *p;
  153. uni q;
  154. char buf[256];
  155. string s;
  156. char instr[] = "Введите строку без пробелов";
  157. char inkey1[] = "Введите ключ шифрования такой же длинны";
  158. char encyp_suc[] = "Строка зашифрована";
  159. char iner[] = "Ошибка при вводе. Привышена размерность";
  160. CharToOem(iner, iner);
  161. CharToOem(encyp_suc, encyp_suc);
  162. CharToOem(inkey1, inkey1);
  163. CharToOem(instr, instr);
  164. cout << instr << endl;
  165. cin >> buf;
  166. OemToChar(buf, buf);
  167. s = buf;
  168. q = s.size();
  169. cystr sc1(encode(s), s.size()); //sc1 - объект класса cystr
  170. cout << inkey1 << endl;
  171. cin >> buf;
  172. OemToChar(buf, buf);
  173. s = buf;
  174. if (q != s.size())
  175. {
  176. cout << iner << endl;
  177. system("pause");
  178. abort();
  179. }
  180. key o(encode(s), s.size()); //o - объект класа key
  181. o.enc(sc1);
  182. cout << encyp_suc << endl;
  183. p = decode(sc1.s_c, sc1.dem);
  184. CharToOem(p, p);
  185. cout << p << endl;
  186. system("pause");
  187. clrscr(); //очистка экрана
  188. }
  189. //******************************************************************************
  190.  
  191. //Функция управления дешифрованием (интерфейс)
  192. //******************************************************************************
  193. void action2()
  194. {
  195. uni q;
  196. char *p;
  197. char buf[256];
  198. string s;
  199. char decyp_suc[] = "Строка дешифрована";
  200. char instr[] = "Введите строку без пробелов";
  201. char inkey2[] = "Введите ключ дешифрования такой же длинны";
  202. char iner[] = "Ошибка при вводе. Привышена размерность";
  203. CharToOem(iner, iner);
  204. CharToOem(inkey2, inkey2);
  205. CharToOem(instr, instr);
  206. CharToOem(decyp_suc, decyp_suc);
  207. cout << instr << endl;
  208. cin >> buf;
  209. OemToChar(buf, buf);
  210. s = buf;
  211. q = s.size();
  212. cystr sc1(encode(s), s.size());
  213. cout << inkey2 << endl;
  214. cin >> buf;
  215. OemToChar(buf, buf);
  216. s = buf;
  217. if (q != s.size())
  218. {
  219. cout << iner << endl;
  220. system("pause");
  221. abort();
  222. }
  223. key o(encode(s), s.size());
  224. o.dec(sc1);
  225. cout << decyp_suc << endl;
  226. p = decode(sc1.open, sc1.dem);
  227. CharToOem(p, p);
  228. cout << p << endl;
  229. system("pause");
  230. clrscr();
  231. }
  232. //******************************************************************************
  233.  
  234. //Главная функция
  235. //******************************************************************************
  236. int main()
  237. {
  238. int q;
  239. char buf[256];
  240. char welcome[] = "Вас приветствует программа КРИПТО 0.0.1 (Шифр Вернама)";
  241. char qes[] = "Выбирите действие\n1 - Шифрование\n2 - Дешифрование\n3 - Выход";
  242. char er[] = "Неверно";
  243. CharToOem(welcome, welcome);
  244. CharToOem(qes, qes);
  245. CharToOem(er, er);
  246. cout << welcome << endl << endl;
  247. while (q != '3')
  248. {
  249. cout << qes << endl;
  250. cin >> q;
  251. getchar();
  252. switch (q)
  253. {
  254. case 1: action1(); break;
  255. case 2: action2(); break;
  256. case 3: return 0;
  257. default: cout << er << endl; system("pause"); clrscr();
  258. }
  259. }
  260. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
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
stdout
Standard output is empty