Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/34: Рейтинг темы: голосов - 34, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 08.05.2018
Сообщений: 23

Шифрование файлов (шифр Цезаря)

31.10.2018, 02:20. Показов 7059. Ответов 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
#include <stdio.h> 
#include <locale> 
#include <conio.h> 
#define ENG 26 
#define RUS 32 
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(); 
if (n < 1) return 0;
printf("Чтобы зашифровать текст введите a, расшифровать b: ");
char c;
scanf_s("%c", &c, 1);
if (c == 'a') (n);
if (c == 'b') (n);
return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.10.2018, 02:20
Ответы с готовыми решениями:

Шифрование русского текста (шифр Цезаря)
Нужно зашифровать и расшифровать, введенный на русском языке , текст (я выбрал шифр Цезаря). С шифровкой именно на русском возникают...

Шифрование/дешифрование текста: шифр Цезаря
Добрый день, необходимо написать программу на с++ которая шифрует и дешифрует текс методом цезаря. Только в пределах алфавита с любым шагом...

Шифрование/дешифрование текста: шифр Цезаря
Задали дома сделать шифр Цезаря , проблема в том ,что объяснили лишь ,что делать через char и все. Может кто-то сможет подсказать по какому...

2
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
31.10.2018, 20:50
Yangir, здравствуйте! Вот программы шифрования и дешифрования:

Шифрование:

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
#include <bits/stdc++.h>
 
    using namespace std;
 
char charEncode(char c, int k) {
    char a, b;
    if (isupper(c)) {
        if (int(c) + k > 90) {
            a = k + int(c) - 26;
            b = char(a);
        } else {
            b = char(c + k);
        }
    } else if (islower(c)) {
        if (int(c) + k > 122) {
            a = k + int(c) - 26;
            b = char(a);
        } else {
            b = char(c + k);
        }
    }
    return b;
}
 
string wordEncode(string s, int k) {
    string b;
    for (int i = 0; s[i]; i++) {
        if (!(isalpha(s[i]))) {
            b += s[i];
        } else {
            b += charEncode(s[i], k);
        }
    }
    return b;
}
 
int main() {
    ifstream fin("input.txt");
    ofstream fout("encoded.txt");
    int shift;
    string s, str;
    cout << "What's the shift length?\n";
    cout << "shift = ";
    cin >> shift;
    while (getline(fin, s)) {
        str = wordEncode(s, shift);
        fout << str << "\n";
    }
    cout << "Text has been encoded!\n";
    fin.close();
    fout.close();
    system("pause");
    return 0;
}
Дешифрование:

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
#include <bits/stdc++.h>
 
    using namespace std;
 
char charDecode(char c, int k) {
    char a, b;
    if (isupper(c)) {
        if (int(c) - k < 65) {
            a = -k + int(c) + 26;
            b = char(a);
        } else {
            b = char(c - k);
        }
    } else if (islower(c)) {
        if (int(c) - k < 97) {
            a = -k + int(c) + 26;
            b = char(a);
        } else {
            b = char(c - k);
        }
    }
    return b;
}
 
string wordDecode(string s, int k) {
    string b;
    for (int i = 0; s[i]; i++) {
        if (!(isalpha(s[i]))) {
            b += s[i];
        } else {
            b += charDecode(s[i], k);
        }
    }
    return b;
}
 
int main() {
    ifstream fin("encoded.txt");
    ofstream fout("decoded.txt");
    int shift;
    string s, str;
    cout << "What's the shift?\n";
    cout << "shift = ";
    cin >> shift;
    cout << "Decoding is going...\n";
    while (getline(fin, s)) {
        s += " ";
        str = wordDecode(s, shift);
        fout << str << "\n";
    }
    cout << "Ready!\n";
    fin.close();
    fout.close();
    system("pause");
    return 0;
}
Добавлено через 1 минуту
P.S. Работает для только для латинских символов. Но это можно подкорректировать.
1
0 / 0 / 0
Регистрация: 08.05.2018
Сообщений: 23
04.11.2018, 18:39  [ТС]
Спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.11.2018, 18:39
Помогаю со студенческими работами здесь

Шифрование/дешифрование текста: шифр Цезаря
8. Написать программу, которая позволяет зашифровывать и расшифровывать с помощью «шифра Цезаря» сообщение, написанное на русском языке....

Шифрование: шифр Цезаря с одним циклическим повтором
Здравствуйте, уважаемые форумчане! Сдаю задачу вот по этой ссылке...

Шифр Цезаря С++
Уже долго сижу, мучаюсь. Не могу понять, что я делаю не так. Подскажите пожалуйста что неправильно, как исправить и где можно почитать по...

C++ Шифр Цезаря
Help нужно написать программу на С++, которая шифрует русские и английские слова. Делает запрос на сдвиг. Зашифрованный код переводил...

Шифр Цезаря
Доброго времени суток всем Задача состоит в том,чтобы считать txt,и зашифровать его шифром Цезаря))) После чтения сие файла...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru