Advertisement
anon20016

Untitled

Dec 20th, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.42 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7. char input[300];
  8. char m[10][10];
  9.  
  10.  
  11. printf("Type 1, if you want to crypt text,\n 2 - to encrypt,\n 0 to exit\n");
  12. int e, type;
  13. scanf("%d", &e);
  14. while (e != 0)
  15. {
  16. if (e == 1)
  17. {
  18. printf("Enter input string: \n");
  19. scanf("%s", &input);
  20.  
  21. printf("Enter route type: ");
  22. scanf("%d", &type);
  23.  
  24.  
  25. int n = 1;
  26. while (n * n < strlen(input))
  27. {
  28. n++;
  29. }
  30. int t = 0; // указатель на элемент входной строки
  31.  
  32. for (int i = 0; i < n; i++)
  33. {
  34. for (int j = 0; j < n; j++)
  35. {
  36. if (t >= strlen(input))
  37. {
  38. m[i][j] = '.';
  39. }
  40. else
  41. {
  42. m[i][j] = input[t];
  43. t++;
  44. }
  45. }
  46. }
  47. printf("Input: %s\nResult: ", input);
  48. char result[200];
  49. int x = 0; // номер строки
  50. int y = 0; // номер столбца
  51. int p = 0; // направление, если 0, то вниз, иначе вверх
  52.  
  53. // 1
  54. if (type == 4)
  55. {
  56. while (y < n)
  57. {
  58. printf("%c", m[x][y]);
  59. if (p == 0)
  60. {
  61. if (x == n - 1)
  62. {
  63. y++;
  64. p = (p + 1) % 2;
  65. }
  66. else
  67. {
  68. x++;
  69. }
  70. }
  71. else
  72. {
  73. if (x == 0)
  74. {
  75. y++;
  76. p = (p + 1) % 2;
  77. }
  78. else
  79. {
  80. x--;
  81. }
  82. }
  83. }
  84. }
  85. if (type == 1)
  86. {
  87. while(y < n)
  88. {
  89. printf("%c", m[x][y]);
  90. if (x == n - 1)
  91. {
  92. x = 0;
  93. y++;
  94. }
  95. else
  96. {
  97. x++;
  98. }
  99. }
  100.  
  101. }
  102.  
  103.  
  104. if (type == 3)
  105. {
  106. for (;;)
  107. {
  108. printf("%c", m[x][y]);
  109. if (x == n - 1 && y == n - 1)
  110. {
  111. break;
  112. }
  113. if (y == n - 1 && p == 0)
  114. {
  115. x++;
  116. p = (p + 1) % 2;
  117. }
  118. else
  119. {
  120. if (x == 0 && p == 0)
  121. {
  122. y++;
  123. p = (p + 1) % 2;
  124. }
  125. else
  126. {
  127. if (x == n - 1 && p == 1)
  128. {
  129. y++;
  130. p = (p + 1) % 2;
  131. }
  132. else
  133. {
  134. if (y == 0 && p == 1)
  135. {
  136. x++;
  137. p = (p + 1) % 2;
  138. }
  139. else
  140. {
  141. if (p == 0)
  142. {
  143. x--;
  144. y++;
  145. }
  146. else
  147. {
  148. x++;
  149. y--;
  150. }
  151. }
  152. }
  153. }
  154. }
  155. }
  156. }
  157.  
  158. if (type == 2)
  159. {
  160. for(int k = 1; k <= n / 2; k++)/*Цикл по номеру витка*/
  161. {
  162. for (int j=k-1; j<n-k+1; j++)
  163. {
  164. printf("%c", m[k-1][j]);
  165. }
  166. for (int j=k; j<n-k+1; j++)
  167. printf("%c", m[j][n-k]);
  168. for (int j=n-k-1; j>=k-1; --j)
  169. printf("%c", m[n-k][j]);
  170. for (int j=n-k-1; j>=k; j--)
  171. printf("%c", m[j][k-1]);
  172. }
  173. }
  174.  
  175. printf("\n");
  176. for (int i = 0 ; i < n; i++)
  177. {
  178. for (int j = 0; j < n; j++)
  179. {
  180. printf("%c", m[i][j]);
  181. }
  182. printf("\n");
  183. }
  184. printf("\n");
  185. }
  186.  
  187.  
  188. if (e == 2)
  189. {
  190. printf("Enter crypted text: \n");
  191. scanf("%s", &input);
  192.  
  193. printf("Input: %s\n", input);
  194.  
  195. printf("Enter route type: ");
  196. scanf("%d", &type);
  197.  
  198. int n = 1;
  199. while (n * n < strlen(input))
  200. {
  201. n++;
  202. }
  203.  
  204. int x = 0; // номер строки
  205. int y = 0; // номер столбца
  206. int t = 0;
  207. int p = 0; // направление, если 0, то вниз, иначе вверх
  208.  
  209. // 1
  210. if (type == 4)
  211. {
  212. while (y < n)
  213. {
  214. m[x][y] = input[t];
  215. t++;
  216. if (p == 0)
  217. {
  218. if (x == n - 1)
  219. {
  220. y++;
  221. p = (p + 1) % 2;
  222. }
  223. else
  224. {
  225. x++;
  226. }
  227. }
  228. else
  229. {
  230. if (x == 0)
  231. {
  232. y++;
  233. p = (p + 1) % 2;
  234. }
  235. else
  236. {
  237. x--;
  238. }
  239. }
  240. }
  241. }
  242. if (type == 1)
  243. {
  244. while(y < n)
  245. {
  246. m[x][y] = input[t];
  247. t++;
  248. if (x == n - 1)
  249. {
  250. x = 0;
  251. y++;
  252. }
  253. else
  254. {
  255. x++;
  256. }
  257. }
  258. }
  259. if (type == 3)
  260. {
  261. for (;;)
  262. {
  263. m[x][y] = input[t];
  264. t++;
  265. if (x == n - 1 && y == n - 1)
  266. {
  267. break;
  268. }
  269. if (y == n - 1 && p == 0)
  270. {
  271. x++;
  272. p = (p + 1) % 2;
  273. }
  274. else
  275. {
  276. if (x == 0 && p == 0)
  277. {
  278. y++;
  279. p = (p + 1) % 2;
  280. }
  281. else
  282. {
  283. if (x == n - 1 && p == 1)
  284. {
  285. y++;
  286. p = (p + 1) % 2;
  287. }
  288. else
  289. {
  290. if (y == 0 && p == 1)
  291. {
  292. x++;
  293. p = (p + 1) % 2;
  294. }
  295. else
  296. {
  297. if (p == 0)
  298. {
  299. x--;
  300. y++;
  301. }
  302. else
  303. {
  304. x++;
  305. y--;
  306. }
  307. }
  308. }
  309. }
  310. }
  311. }
  312. }
  313.  
  314. if (type == 2)
  315. {
  316. for(int k = 1; k <= n / 2; k++)
  317. {
  318. for (int j=k-1; j<n-k+1; j++)
  319. {
  320. m[k-1][j] = input[t];
  321. t++;
  322. };
  323. for (int j=k; j<n-k+1; j++)
  324. {
  325. m[j][n-k] = input[t];
  326. t++;
  327. };
  328. for (int j=n-k-1; j>=k-1; --j)
  329. {
  330. m[n-k][j] = input[t];
  331. t++;
  332. };
  333. for (int j=n-k-1; j>=k; j--)
  334. {
  335. m[j][k-1] = input[t];
  336. t++;
  337. };
  338. }
  339. }
  340. //
  341.  
  342.  
  343.  
  344. printf("Result: ");
  345. for (int i = 0; i < n; i++)
  346. {
  347. for (int j = 0; j < n; j++)
  348. {
  349. printf("%c", m[i][j]);
  350. }
  351. }
  352. }
  353.  
  354. printf("\nType 1, if you want to crypt text,\n 2 - to encrypt,\n 0 to exit\n");
  355. scanf("%d", &e);
  356. }
  357.  
  358. return 0;
  359. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement