Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.60 KB | None | 0 0
  1. // ConsoleApplication1.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
  2. //
  3. #include <iostream>
  4.  
  5.  
  6. #define ENG 26
  7. #define RUS 32
  8. #include <stdio.h>
  9. #include <locale>
  10.  
  11. #define ENG 26
  12. #define RUS 32
  13.  
  14. void encrypt(int n)
  15. {
  16.     FILE *fp1, *fp2;
  17.     fopen_s(&fp1, "input.txt", "r");
  18.     fopen_s(&fp2, "output.txt", "w");
  19.     int flag;
  20.     char c;
  21.     c = getc(fp1);
  22.     while (!feof(fp1))
  23.     {
  24.         flag = 0; //обработан ли текущий символ
  25.         if (c >= 'A' && c <= 'Z')
  26.         {
  27.             c = c + (n % ENG);
  28.             if (c > 'Z') c = 'A' + (c - 'Z') - 1;
  29.             fprintf(fp2, "%c", c);
  30.             flag = 1;
  31.         }
  32.         if (c >= 'a' && c <= 'z')
  33.         {
  34.             c = c + (n % ENG);
  35.             if (c > 'z') c = 'a' + (c - 'z') - 1;
  36.             fprintf(fp2, "%c", c);
  37.             flag = 1;
  38.         }
  39.         if (c >= 'А' && c <= 'Я')
  40.         {
  41.             c = c + (n % RUS);
  42.             if (c > 'Я') c = 'А' + (c - 'Я') - 1;
  43.             fprintf(fp2, "%c", c);
  44.             flag = 1;
  45.         }
  46.         if (c >= 'а' && c <= 'я')
  47.         {
  48.             c = c + (n % RUS);
  49.             if (c > 'я') c = 'а' + (c - 'я') - 1;
  50.             fprintf(fp2, "%c", c);
  51.             flag = 1;
  52.         }
  53.         if (!flag) fprintf(fp2, "%c", c);
  54.         c = getc(fp1);
  55.     }
  56.     fclose(fp1);
  57.     fclose(fp2);
  58. }
  59.  
  60.  
  61. void decipher(int n)
  62. {
  63.     FILE *fp1, *fp2;
  64.     fopen_s(&fp1, "input.txt", "r");
  65.     fopen_s(&fp2, "output.txt", "w");
  66.     int flag;
  67.     char c;
  68.     c = getc(fp1);
  69.     while (!feof(fp1))
  70.     {
  71.         flag = 0;
  72.         if (c >= 'A' && c <= 'Z')
  73.         {
  74.             c = c - (n % ENG);
  75.             if (c < 'A') c = 'Z' - ('A' - c) + 1;
  76.             fprintf(fp2, "%c", c);
  77.             flag = 1;
  78.         }
  79.         if (c >= 'a' && c <= 'z')
  80.         {
  81.             c = c - (n % ENG);
  82.             if (c < 'a') c = 'z' - ('a' - c) + 1;
  83.             fprintf(fp2, "%c", c);
  84.             flag = 1;
  85.         }
  86.         if (c >= 'А' && c <= 'Я')
  87.         {
  88.             c = c - (n % RUS);
  89.             if (c < 'А') c = 'Я' - ('А' - c) + 1;
  90.             fprintf(fp2, "%c", c);
  91.             flag = 1;
  92.         }
  93.         if (c >= 'а' && c <= 'я')
  94.         {
  95.             c = c - (n % RUS);
  96.             if (c < 'а') c = 'я' - ('а' - c) + 1;
  97.             fprintf(fp2, "%c", c);
  98.             flag = 1;
  99.         }
  100.         if (!flag) fprintf(fp2, "%c", c);
  101.         c = getc(fp1);
  102.     }
  103.     fclose(fp1);
  104.     fclose(fp2);
  105. }
  106.  
  107. int main()
  108. {
  109.     setlocale(LC_ALL, "Russian");
  110.     int n;
  111.     printf("Введите натуральное n: ");
  112.     scanf_s("%d", &n);
  113.     getchar(); //нужен для того, чтобы поймать символ клавиши ENTER, нажатой при вводе числа n
  114.     if (n < 1) return 0;
  115.     printf("Чтобы зашифровать текст введите a, расшифровать b: ");
  116.     char c;
  117.     scanf_s("%c", &c, 1);
  118.     if (c == 'a') encrypt(n);
  119.     if (c == 'b') decipher(n);
  120.     return 0;
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement