Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 1
Регистрация: 11.02.2018
Сообщений: 133
1

Шифрование и дешифрование - работа с файлами

29.09.2018, 15:46. Показов 820. Ответов 0

Author24 — интернет-сервис помощи студентам

Подскажите как исправиль ошибку в коде при компиляции в DEV-C++
No such file or directory.


Задание:
Шифрование текста методом сдвига символов (также известный как шифр Цезаря). Пользователь вводит натуральное число n – это количество символов, на которое мы сдвигаем данный символ. Например, если n = 2, то буква ‘б’ превращается в букву ‘г’. Будем считать, что буквы идут по кругу, то есть за буквой ‘я’ следует буква ‘а’. Программа должна уметь как зашифровывать, так и расшифровывать текст. Шифровать будем только русские и английские буквы (другие символы: знаки препинания, пробелы и т.п. – шифровать не будем, оставим их без изменения). Ввод/вывод производим из файла.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/* 
   чужой код, разобраться и доработать
   шифрование и дешифрование
   https://www.guardianelinks.com/threads/shifr-cezarja-na-jazyke-s.438/
*/
#include <stdio.h>
#include <locale>
#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 >= 'А' && c <= 'Я')
        {
            c = c + (n % RUS);
            if (c > 'Я') c = 'А' + (c - 'Я') - 1;
            fprintf (fp2, "%c", c);
            flag = 1;
        }
        if (c>='а' && c<='я')
        {
            c = c + (n % RUS);
            if (c > 'я') c = 'а' + (c - 'я') - 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 >= 'А' && c <= 'Я')
        {
            c = c - (n % RUS);
            if (c < 'А') c = 'Я' - ('А' - c) + 1;
            fprintf (fp2, "%c", c);
            flag = 1;
        }
        if (c >= 'а' && c <= 'я')
        {
            c = c - (n % RUS);
            if (c < 'а') c = 'я' - ('а' - c) + 1;
            fprintf (fp2, "%c", c);
            flag = 1;
        }
        if (!flag) fprintf (fp2, "%c", c);
        c = getc(fp1);
    }
    fclose (fp1);
    fclose (fp2);
}
 
int main ()
{
    setlocale(LC_ALL,"Russian");
    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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.09.2018, 15:46
Ответы с готовыми решениями:

Шифрование/дешифрование алгоритмом RSA
Надо написать итоговую работу по СИ уровень знаний ниже среднего.При этом надо использовать...

Шифрование и дешифрование XOR-шифрованием
Добрый день, помогите пожалуйста написать программу на Си, которая шифрует и дешифрует слова в...

Шифрование/дешифрование - Не удается расшифровать файл
#include &lt;openssl/rand.h&gt; #include &lt;openssl/md5.h&gt; #include &lt;openssl/aes.h&gt; #include...

Шифрование/дешифрование данных в режиме однократного гаммирования
Как можно шифровать и дешифровать данные в режиме однократного гаммирования?

0
29.09.2018, 15:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.09.2018, 15:46
Помогаю со студенческими работами здесь

Создать утилиту, производящую шифрование\дешифрование файла
1.Нужно создать утилиту которая будет шифровать и дешифрововать записаны текст! 2.Чтобы программа...

работа с файлами + небольшое шифрование
Чем дальше, тем сложнее :( Помогите пожалуйста разобраться в ЭТОМ. Ну или такой вопросик: как можно...

Работа с большими файлами + шифрование
Всем привет! Столкнулся с проблемой получения файлов большого размера(&gt;1.5Gb на симуляторе)...

Работа с большими файлами: шифрование и расчёт хэша
Доброе время суток. У меня возникла следующая проблема: При попытке прочитать файл как массив байт,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru