Advertisement
Guest User

Untitled

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