Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 10 laba
- #include <stdio.h>
- #include <locale>
- #define ENG 26
- #define RUS 32
- void encrypt(int n)
- {
- FILE* fp1, * fp2;
- fopen_s(&fp1, "C:\\Users\\1253140\\Desktop\\10 laba\\input.txt", "r");
- fopen_s(&fp2, "C:\\Users\\1253140\\Desktop\10 laba\\output.txt", "w");
- int flag;
- char c;
- c = getc(fp1); // чтение одного байта
- while (!feof(fp1)) // пока не конец файла
- {
- flag = 0; //обработан ли текущий символ
- if (c >= 65 && c <= 90) // алфавит от А-Z по таблице ASCII
- {
- c += (n % ENG);
- if (c > 90)
- {
- c = 65 + (c - 90) - 1;
- }
- fprintf(fp2, "%c", c);
- flag = 1;
- }
- if (c >= 97 && c <= 122) // алфавит от a-z по таблице ASCII
- {
- c += (n % ENG);
- if (c > 122)
- {
- c = 97 + (c - 122) - 1;
- }
- fprintf(fp2, "%c", c);
- flag = 1;
- }
- if (c >= -64 && c <= -33) // алфавит от А-Я по таблице ASCII
- {
- c += (n % RUS);
- if (c > -33)
- {
- c = (-64) + (c + 33) - 1;
- }
- fprintf(fp2, "%c", c);
- flag = 1;
- }
- if (c >= -32 && c <= -1) // алфавит от а-я по таблице ASCII
- {
- c += (n % RUS);
- if (c > -1)
- {
- c = (-32) + (c + 1) - 1;
- }
- fprintf(fp2, "%c", c);
- flag = 1;
- }
- if (flag == 0)
- {
- fprintf(fp2, "%c", c);
- }
- c = getc(fp1);
- }
- fclose(fp1);
- fclose(fp2);
- }
- void decipher(int n)
- {
- FILE* fp1, * fp2;
- fopen_s(&fp1, "C:\\Users\\1253140\\Desktop\\10 laba\\input.txt", "r");
- fopen_s(&fp2, "C:\\Users\\1253140\\Desktop\\10 laba\\output.txt", "w");
- int flag;
- char c;
- c = getc(fp1);
- while (!feof(fp1))
- {
- flag = 0;
- if (c >= 65 && c <= 90) // алфавит от А-Z по таблице ASCII
- {
- c -= (n % ENG);
- if (c < 65)
- {
- c = 90 - (65 - c) + 1;
- }
- fprintf(fp2, "%c", c);
- flag = 1;
- }
- if (c >= 97 && c <= 122) // алфавит от a-z по таблице ASCII
- {
- c -= (n % ENG);
- if (c < 97)
- {
- c = 122 - (97 - c) + 1;
- }
- fprintf(fp2, "%c", c);
- flag = 1;
- }
- if (c >= -64 && c <= -33) // алфавит от А-Я по таблице ASCII
- {
- c -= (n % RUS);
- if (c < -64)
- {
- c = -33 - (-64 - c) + 1;
- }
- fprintf(fp2, "%c", c);
- flag = 1;
- }
- if (c >= -32 && c <= -1) // алфавит от а-я по таблице ASCII
- {
- c -= (n % RUS);
- if (c < -32)
- {
- c = -1 - (-32 - c) + 1;
- }
- fprintf(fp2, "%c", c);
- flag = 1;
- }
- if (flag == 0)
- {
- fprintf(fp2, "%c", c);
- }
- c = getc(fp1);
- }
- fclose(fp1);
- fclose(fp2);
- }
- int main()
- {
- setlocale(LC_ALL, "Rus");
- int n, c;
- printf("Введите сдвиг: ");
- scanf_s("%d", &n);
- getchar(); //нужен для того, чтобы поймать символ клавиши ENTER, нажатой при вводе числа n
- system("cls");
- if (n < 1)
- {
- return 0;
- }
- printf("Выберите действие: \n");
- printf("1. Зашифровать текст \n");
- printf("2. Расшифровать текст \n");
- scanf_s("%d", &c);
- if (c == 1)
- {
- encrypt(n);
- }
- if (c == 2)
- {
- decipher(n);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment