diff --git a/Lsn11AlS.c b/Lsn11AlS.c new file mode 100644 index 0000000..2f5c533 --- /dev/null +++ b/Lsn11AlS.c @@ -0,0 +1,114 @@ +#include +#include + +#define ENG 26 +#define RUS 32 + + +void encrypt (int n) +{ + FILE *fp1, *fp2; + fopen_s(&fp1, "input.txt", "r"); + fopen_s(&fp2, "output.txt", "w"); + int flag; + char c; + c = getc(fp1); + while (!feof(fp1)) + { + flag = 0; //обработан ли текущий символ + if (c >= 'A' && c <= 'Z') + { + c = c + (n % ENG); + if (c > 'Z') c = 'A' + (c - 'Z') - 1; + fprintf (fp2, "%c", c); + flag = 1; + } + if (c >= 'a' && c <= 'z') + { + c = c + (n % ENG); + if (c > 'z') c = 'a' + (c - 'z') - 1; + fprintf (fp2, "%c", c); + flag = 1; + } + if (c >= 'A' && c <= 'z') + { + c = c + (n % RUS); + if (c > 'Z') c = 'A' + (c - 'Z') - 1; + fprintf (fp2, "%c", c); + flag = 1; + } + if (c>='a' && c<='z') + { + c = c + (n % RUS); + if (c > 'z') c = 'a' + (c - 'z') - 1; + fprintf (fp2, "%c", c); + flag = 1; + } + if (!flag) fprintf (fp2, "%c", c); + c = getc(fp1); + } + fclose (fp1); + fclose (fp2); +} + + +void decipher (int n) +{ + FILE *fp1, *fp2; + fopen_s(&fp1, "input.txt", "r"); + fopen_s(&fp2, "output.txt", "w"); + int flag; + char c; + c = getc(fp1); + while (!feof(fp1)) + { + flag = 0; + if (c >= 'A' && c <= 'Z') + { + c = c - (n % ENG); + if (c < 'A') c = 'Z' - ('A' - c) + 1; + fprintf (fp2, "%c", c); + flag = 1; + } + if (c >= 'a' && c <= 'z') + { + c = c - (n % ENG); + if (c < 'a') c = 'z' - ('a' - c) + 1; + fprintf (fp2, "%c", c); + flag = 1; + } + if (c >= 'A' && c <= 'Z') + { + c = c - (n % RUS); + if (c < 'A') c = 'Z' - ('A' - c) + 1; + fprintf (fp2, "%c", c); + flag = 1; + } + if (c >= 'a' && c <= 'z') + { + c = c - (n % RUS); + if (c < 'a') c = 'z' - ('a' - c) + 1; + fprintf (fp2, "%c", c); + flag = 1; + } + if (!flag) fprintf (fp2, "%c", c); + c = getc(fp1); + } + fclose (fp1); + fclose (fp2); +} +int main() +{ + + int n; + printf ("Введите натуральное n: "); + scanf_s ("%d", &n); + getchar (); //нужен для того, чтобы поймать символ клавиши ENTER, нажатой при вводе числа n + if (n < 1) return 0; + printf ("Чтобы зашифровать текст введите a, расшифровать b: "); + char c; + scanf_s ("%c", &c, 1); + if (c == 'a') encrypt (n); + if (c == 'b') decipher (n); + return 0; +} \ No newline at end of file