fork download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace Playfair_code
  11. {
  12. public partial class Form1 : Form
  13. {
  14. public Form1()
  15. {
  16. InitializeComponent();
  17. }
  18. //матрица алфавита шифрования
  19. private string[,] encriptionMatrix =
  20. {
  21. {"А", "Ч", "Б", "М", "Ц", "В"}, //первая строка матрицы
  22. {"Ь", "Г", "Н", "Ш", "Д", "О"}, //вторая строка матрицы
  23. {"Е", "Щ", ",", "Х", "У", "П"}, //третья строка матрицы
  24. {".", "З", "Ъ", "Р", "И", "Й"}, //четвертая строка матрицы
  25. {"С", "-", "К", "Э", "Т", "Л"}, //пятая строка матрицы
  26. {"Ю", "Я", " ", "Ы", "Ф", "Ж"} //шестая строка матрицы
  27. };
  28.  
  29. private string text; //исходный текст для шифрования
  30.  
  31. private int i_first = 0, j_first = 0; //координаты первого символа пары
  32. private int i_second = 0, j_second = 0;//координаты второго символа пары
  33. private string s1 = "", s2 = ""; //строки для хранения зашифрованного символа
  34. private string encodetString; //зашифрованая строка
  35. private string decodetString; //расшифрованная строка
  36. private string login; //логин
  37. private string pass; //пароль
  38.  
  39. #region Кодирование текста
  40.  
  41. private void button1_Click(object sender, EventArgs e)
  42. {
  43. text = "";
  44. encodetString = "";
  45.  
  46. text = Convert.ToString(richTextBox1.Text).ToUpper();
  47. int t = text.Length; //длина входного слова
  48. int i, j;
  49. ///проверяем, четное ли число символов в строке
  50. int temp = t % 2;
  51. if (temp != 0) //если нет
  52. { //то добавляем в конец строки символ " "
  53. text = text.PadRight((t + 1), ' ');
  54. }
  55.  
  56. int len = text.Length / 2; /*длина нового массива -
  57.   равная половине длины входного слова
  58.   т.к. в новом масиве каждый элемент будет
  59.   содержать 2 элемента из старого массива*/
  60.  
  61. string[] str = new string[len]; //новый массив
  62.  
  63. int l = -1; //служебная переменная
  64.  
  65. for (i = 0; i < t; i += 2) //в старом массиве шаг равен 2
  66. {
  67. l++; //индексы для нового массива
  68. if (l < len)
  69. {
  70. //Элемент_нового_массива[i] = Элемент_старого_массива[i] + Элемент_старого_массива[i+1]
  71. str[l] = Convert.ToString(text[i]) + Convert.ToString(text[i + 1]);
  72. }
  73.  
  74. }
  75.  
  76. ///координаты очередного найденного символа из каждой пары
  77.  
  78. foreach (string both in str)
  79. {
  80. for (i = 0; i < 6; i++)
  81. {
  82. for (j = 0; j < 6; j++)
  83. {
  84. //координаты первого символа пары в исходной матрице
  85. if (both[0] == Convert.ToChar(encriptionMatrix[i, j]))
  86. {
  87. i_first = i;
  88. j_first = j;
  89.  
  90. }
  91.  
  92. //координаты второго символа пары в исходной матрице
  93. if (both[1] == Convert.ToChar(encriptionMatrix[i, j]))
  94. {
  95. i_second = i;
  96. j_second = j;
  97.  
  98. }
  99. }
  100. }
  101.  
  102. ///если пара символов находится в одной строке
  103. if (i_first == i_second)
  104. {
  105. if (j_first == 5) /*если символ последний в строке,
  106.   кодируем его первым символом из матрицы*/
  107. {
  108. s1 = Convert.ToString(encriptionMatrix[i_first, 0]);
  109. }
  110. //если символ не последний, кодируем его стоящим справа от него
  111. else
  112. {
  113. s1 = Convert.ToString(encriptionMatrix[i_first, j_first + 1]);
  114. }
  115.  
  116. if (j_second == 5) /*если символ последний в строке
  117.   кодируем его первым символом из матрицы*/
  118. {
  119. s2 = Convert.ToString(encriptionMatrix[i_second, 0]);
  120. }
  121. //если символ не последний, кодируем его стоящим справа от него
  122. else
  123. {
  124. s2 = Convert.ToString(encriptionMatrix[i_second, j_second + 1]);
  125. }
  126.  
  127. }
  128.  
  129. ///если пара символов находится в одном столбце
  130. if (j_first == j_second)
  131. {
  132. if (i_first == 5)
  133. {
  134. s1 = Convert.ToString(encriptionMatrix[0, j_first]);
  135. }
  136. else
  137. {
  138. s1 = Convert.ToString(encriptionMatrix[i_first + 1, j_first]);
  139. }
  140.  
  141. if (i_second == 5)
  142. {
  143. s2 = Convert.ToString(encriptionMatrix[0, j_second]);
  144. }
  145.  
  146. else
  147. {
  148. s2 = Convert.ToString(encriptionMatrix[i_second + 1, j_second]);
  149. }
  150. }
  151.  
  152. ///если пара символов находиться в разных столбцах и строках
  153. if (i_first != i_second && j_first != j_second)
  154. {
  155.  
  156. s1 = Convert.ToString(encriptionMatrix[i_first, j_second]);
  157. s2 = Convert.ToString(encriptionMatrix[i_second, j_first]);
  158. }
  159.  
  160. if (s1 == s2)
  161. {
  162. encodetString = encodetString + s1 + "=" + s2;
  163. }
  164. else
  165. {
  166.  
  167. //записыавем результат кодирования
  168. encodetString = encodetString + s1 + s2;
  169. }
  170.  
  171. richTextBox2.Text = encodetString.ToLower();
  172. }
  173. }
  174.  
  175. #endregion
  176.  
  177.  
  178.  
  179.  
  180. private void button3_Click(object sender, EventArgs e)
  181. {
  182.  
  183.  
  184. int count = 0;
  185. login = Convert.ToString(textBox1.Text);
  186. pass = Convert.ToString(textBox2.Text);
  187.  
  188. if (login == "root" && pass == "qwerty")
  189. {
  190. foreach (string s in encriptionMatrix)
  191. {
  192. count++;
  193. if (count != 6)
  194. {
  195. richTextBox3.Text += s + "\t";
  196. }
  197. if (count == 6)
  198. {
  199. richTextBox3.Text += s + "\t\n";
  200. count = 0;
  201. }
  202. }
  203. }
  204. else
  205. {
  206. MessageBox.Show("Неверный логин и пароль", "Ошибка инициализации", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  207.  
  208. }
  209. }
  210.  
  211. private void button4_Click(object sender, EventArgs e)
  212. {
  213. richTextBox3.Clear();
  214. textBox2.Clear();
  215.  
  216. }
  217.  
  218.  
  219. #region Раскодирование текста
  220. private void button2_Click_1(object sender, EventArgs e)
  221. {
  222. decodetString = "";
  223. string tempString = ""; //переменная для хранения строки подлежащей расшифровке
  224. int i, j;
  225.  
  226. //удаляем символы "-" из зашифрованной строки
  227. for (i = 0; i < encodetString.Length; i++)
  228. {
  229. if (encodetString[i] != '=')
  230. {
  231. tempString = tempString + encodetString[i].ToString();
  232. }
  233. }
  234. //MessageBox.Show(tempString);
  235.  
  236.  
  237. int len = tempString.Length / 2; /*длина нового массива -
  238.   равная половине длины входного слова
  239.   т.к. в новом масиве каждый элемент будет
  240.   содержать 2 элемента из старого массива*/
  241.  
  242. string[] str2 = new string[len]; //новый массив
  243.  
  244. int l = -1; //служебная переменная
  245.  
  246. for (i = 0; i < tempString.Length; i += 2) //в старом массиве шаг равен 2
  247. {
  248. l++; //индексы для нового массива
  249. if (l < len)
  250. {
  251. //Элемент_нового_массива[i] = Элемент_старого_массива[i] + Элемент_старого_массива[i+1]
  252. str2[l] = Convert.ToString(tempString[i]) + Convert.ToString(tempString[i + 1]);
  253. }
  254.  
  255. }
  256.  
  257.  
  258. foreach (string both in str2)
  259. {
  260. for (i = 0; i < 6; i++)
  261. {
  262. for (j = 0; j < 6; j++)
  263. {
  264. //координаты первого символа пары в исходной матрице
  265. if (both[0] == Convert.ToChar(encriptionMatrix[i, j]))
  266. {
  267. i_first = i;
  268. j_first = j;
  269. }
  270.  
  271. //координаты второго символа пары в исходной матрице
  272. if (both[1] == Convert.ToChar(encriptionMatrix[i, j]))
  273. {
  274. i_second = i;
  275. j_second = j;
  276. }
  277. }
  278. }
  279.  
  280. if (s1 == s2)
  281. {
  282. if (i_first != 0 && i_second != 0)
  283. {
  284. s1 = Convert.ToString(encriptionMatrix[i_first - 1, j_first]);
  285. s2 = Convert.ToString(encriptionMatrix[i_second - 1, j_second]);
  286. }
  287. else
  288. {
  289. s1 = Convert.ToString(encriptionMatrix[5, j_first]);
  290. s2 = Convert.ToString(encriptionMatrix[5, j_second]);
  291. }
  292.  
  293. }
  294. if (s1 != s2)
  295. {
  296. if (i_first == i_second)
  297. {
  298. if (j_first == 0) /*если символ первый в строке,
  299.   кодируем его последним символом из матрицы*/
  300. {
  301. s1 = Convert.ToString(encriptionMatrix[i_first, 5]);
  302. }
  303. //если символ не последний, кодируем его стоящим справа от него
  304. else
  305. {
  306. s1 = Convert.ToString(encriptionMatrix[i_first, j_first - 1]);
  307. }
  308.  
  309. if (j_second == 0) /*если символ последний в строке
  310.   кодируем его первым символом из матрицы*/
  311. {
  312. s2 = Convert.ToString(encriptionMatrix[i_second, 5]);
  313. }
  314. //если символ не последний, кодируем его стоящим справа от него
  315. else
  316. {
  317. s2 = Convert.ToString(encriptionMatrix[i_second, j_second - 1]);
  318. }
  319.  
  320. }
  321. ///если пара символов находится в одном столбце
  322. if (j_first == j_second)
  323. {
  324. if (i_first == 0)
  325. {
  326. s1 = Convert.ToString(encriptionMatrix[5, j_first]);
  327. }
  328. else
  329. {
  330. s1 = Convert.ToString(encriptionMatrix[i_first - 1, j_first]);
  331. }
  332.  
  333. if (i_second == 0)
  334. {
  335. s2 = Convert.ToString(encriptionMatrix[5, j_second]);
  336. }
  337.  
  338. else
  339. {
  340. s2 = Convert.ToString(encriptionMatrix[i_second - 1, j_second]);
  341. }
  342. }
  343.  
  344. ///если пара символов находиться в разных столбцах и строках
  345. if (i_first != i_second && j_first != j_second)
  346. {
  347.  
  348. s1 = Convert.ToString(encriptionMatrix[i_first, j_second]);
  349. s2 = Convert.ToString(encriptionMatrix[i_second, j_first]);
  350.  
  351. }
  352. }
  353.  
  354.  
  355. decodetString = decodetString + s1 + s2;
  356. }
  357.  
  358.  
  359. richTextBox4.Text = decodetString.ToLower();
  360. }
  361. #endregion
  362.  
  363.  
  364. private void button5_Click(object sender, EventArgs e)
  365. {
  366. Application.Exit();
  367. }
  368.  
  369.  
  370.  
  371.  
  372. }
  373. }
  374.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:39:9: error: invalid preprocessing directive #region
        #region Кодирование текста
         ^~~~~~
prog.cpp:175:9: error: invalid preprocessing directive #endregion
        #endregion
         ^~~~~~~~~
prog.cpp:219:10: error: invalid preprocessing directive #region
         #region Раскодирование текста
          ^~~~~~
prog.cpp:361:10: error: invalid preprocessing directive #endregion
         #endregion
          ^~~~~~~~~
prog.cpp:1:7: error: expected nested-name-specifier before ‘System’
 using System;
       ^~~~~~
prog.cpp:2:7: error: expected nested-name-specifier before ‘System’
 using System.Collections.Generic;
       ^~~~~~
prog.cpp:3:7: error: expected nested-name-specifier before ‘System’
 using System.ComponentModel;
       ^~~~~~
prog.cpp:4:7: error: expected nested-name-specifier before ‘System’
 using System.Data;
       ^~~~~~
prog.cpp:5:7: error: expected nested-name-specifier before ‘System’
 using System.Drawing;
       ^~~~~~
prog.cpp:6:7: error: expected nested-name-specifier before ‘System’
 using System.Linq;
       ^~~~~~
prog.cpp:7:7: error: expected nested-name-specifier before ‘System’
 using System.Text;
       ^~~~~~
prog.cpp:8:7: error: expected nested-name-specifier before ‘System’
 using System.Windows.Forms;
       ^~~~~~
prog.cpp:12:5: error: expected unqualified-id before ‘public’
     public partial class Form1 : Form
     ^~~~~~
prog.cpp:373:1: error: expected ‘}’ at end of input
 }
 ^
stdout
Standard output is empty