Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
semb
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 9
#1

Зашифровать текст - C++

24.05.2013, 00:50. Просмотров 1773. Ответов 19
Метки нет (Все метки)

Чтобы зашифровать текст, записанный с помощью русских букв и знаков препинания, его можно переписать, заменив каждую букву непосредственно следующей за ней по алфавиту (буква я заменяется на а). Зашифровать данный текст. Расшифровать данный текст.
Помогите пожалуйста. Очень надо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2013, 00:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Зашифровать текст (C++):

Зашифровать текст - C++
Зашифровать данное слово, используя таблицу ASCII-кодов: Printer И дешифровать, используя таблицу ASCII-кодов: 43 4F 4D 50 55 54 45 52 ...

Зашифровать текст - C++
Здравствуйте ! Помогите,пожалуйста,составить программу,которая бы считывала русский текст из файла "input.txt" и кодировала его,заменяя...

Зашифровать текст С++ - C++
Нужно текст взять из текстового документа File.txt, и вывести в текстовый-зашифрованный файл вот что я сделал #include...

зашифровать текст - C++
На C++ как зашифровать текст,чтобы буквы выводились в любом порядке в слове.

Зашифровать текст - C++
. Чтобы зашифровать текст, записанный с помощью русских букв и знаков препинания, его можно переписать, заменив каждую букву...

Зашифровать текст по ключу - C++
Разработать функцию программиста, которая шифрует строку, заменяя каждый символ другим символом по следующему правилу: к коду первого по...

19
MyMind
25 / 25 / 7
Регистрация: 14.05.2013
Сообщений: 68
24.05.2013, 02:44 #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
#include <conio.h>
#include <iostream>
#include <string>
 
using namespace std;
 
const char insane_ABC[] = "*ЎўЈ¤Ґс¦§Ё©Є«¬*®Їабвгдежзийклмноп";
const char normal_ABC[] = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
 
char encryption(char b) {
    for (int j = 0; j < 33; j++)
        if (b == insane_ABC[j]) return normal_ABC[j+1];
}
 
char decryption(char b) {
    for (int j = 0; j < 33; j++)
        if (b == insane_ABC[j]) return normal_ABC[j-1];
}
 
int main() {
    int c, kod;
    setlocale(LC_ALL, "Russian");
    string s;
    cout << "Введите строку: ";
    getline(cin, s);
    cout << "Выберите операцию: " << endl;
    cout << "   1 - зашифровать" << endl;
    cout << "   2 - расшифровать" << endl;
    cout << "Ваш выбор: ";
    cin >> kod;
    c = s.length();
    switch(kod) {
        case 1:
            for (int i = 0; i < c; i++)
                if (s[i] >= '*' && s[i] <= 'п')
                    if (s[i] != 'п') s[i] = encryption(s[i]);
                    else s[i] = normal_ABC[0];
            break;
        case 2:
            for (int i = 0; i < c; i++)
                if (s[i] >= '*' && s[i] <= 'п')
                    if (s[i] != ' ') s[i] = decryption(s[i]);
                    else s[i] = normal_ABC[33];
            break;
    }
    cout << endl << "Результат: " << s;
    getch();
    return 0;
}
строку с "кракозябрами", массив insane_ABC, создайте сами. так как сюда эта строка скопировалась со звёздочками._.
1
MyMind
25 / 25 / 7
Регистрация: 14.05.2013
Сообщений: 68
24.05.2013, 02:50 #3
вот файл с со строкой, которая находится в insane_ABC
0
Вложения
Тип файла: txt Новый текстовый документ.txt (33 байт, 20 просмотров)
MyMind
25 / 25 / 7
Регистрация: 14.05.2013
Сообщений: 68
24.05.2013, 03:13 #4
в общем, скопировалось оно как-то криво, поэтому вот вам .cpp файлик
0
Вложения
Тип файла: rar 1.rar (709 байт, 28 просмотров)
Miwa123
37 / 37 / 1
Регистрация: 16.04.2013
Сообщений: 317
Записей в блоге: 1
24.05.2013, 08:59 #5
Цитата Сообщение от MyMind Посмотреть сообщение
вот что у меня вышло._.
строку с "кракозябрами", массив insane_ABC, создайте сами. так как сюда эта строка скопировалась со звёздочками._.
чтобы каждая буква на последующую в алфавите заменилась
const char insane_ABC[] = "*ЎўЈ¤Ґс¦§Ё©Є«¬*®Їабвгдежзийклмноп";
const char normal_ABC[] = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
0
MyMind
25 / 25 / 7
Регистрация: 14.05.2013
Сообщений: 68
24.05.2013, 09:13 #6
в чём проблемы?
0
semb
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 9
24.05.2013, 12:59  [ТС] #7
Почему-то не работает
C++
1
getch();
и что должно быть вместо крокозябр?

Добавлено через 17 минут
Всё работает спасибо. Я разобрался.

Добавлено через 37 минут
Исправил insane_ABC. Но выдаётся ошибка cannot open output file name.exe: Permission denied((
0
MyMind
25 / 25 / 7
Регистрация: 14.05.2013
Сообщений: 68
24.05.2013, 13:01 #8
я же вам кинул файлик с кодом в архиве. должно всё работать
0
semb
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 9
24.05.2013, 13:09  [ТС] #9
вот содержимое файла
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
#include <conio.h>
#include <iostream>
#include <string>
 
using namespace std;
 
const char insane_ABC[] = " ЎўЈ¤Ґс¦§Ё©Є«¬*®Їабвгдежзийклмноп";
const char normal_ABC[] = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
 
char encryption(char b) {
    for (int j = 0; j < 33; j++)
        if (b == insane_ABC[j]) return normal_ABC[j+1];
}
 
char decryption(char b) {
    for (int j = 0; j < 33; j++)
        if (b == insane_ABC[j]) return normal_ABC[j-1];
}
 
int main() {
    int c, kod;
    setlocale(LC_ALL, "Russian");
    string s;
    cout << "Введите строку: ";
    getline(cin, s);
    cout << "Выберите операцию: " << endl;
    cout << "   1 - зашифровать" << endl;
    cout << "   2 - расшифровать" << endl;
    cout << "Ваш выбор: ";
    cin >> kod;
    c = s.length();
    switch(kod) {
        case 1:
            for (int i = 0; i < c; i++)
                if (s[i] >= ' ' && s[i] <= 'п')
                    if (s[i] != 'п') s[i] = encryption(s[i]);
                    else s[i] = normal_ABC[0];
            break;
        case 2:
            for (int i = 0; i < c; i++)
                if (s[i] >= ' ' && s[i] <= 'п')
                    if (s[i] != ' ') s[i] = decryption(s[i]);
                    else s[i] = normal_ABC[33];
            break;
    }
    cout << endl << "Результат: " << s;
    getch();
    return 0;
}
Программа запустилась, но после после выбора расшифровать или зашифровать, ничего не происходит.
Помогите разобраться пожалуйста.
0
vetal0007
29 / 29 / 1
Регистрация: 11.02.2012
Сообщений: 339
24.05.2013, 13:55 #10
C++
1
_getch();
а не
C++
1
getch();
0
vetal0007
29 / 29 / 1
Регистрация: 11.02.2012
Сообщений: 339
24.05.2013, 14:04 #11
Вот, все работает
0
Миниатюры
Зашифровать текст   Зашифровать текст  
semb
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 9
24.05.2013, 15:25  [ТС] #12
А выложите пожалуйста код. А то я может что-то не так сделал.
0
vetal0007
29 / 29 / 1
Регистрация: 11.02.2012
Сообщений: 339
24.05.2013, 15:42 #13
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
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <string>
 
using namespace std;
 
const char insane_ABC[] = " ЎўЈ¤Ґс¦§Ё©Є«¬*®Їабвгдежзийклмноп";
const char normal_ABC[] = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
 
char encryption(char b) {
    for (int j = 0; j < 33; j++)
        if (b == insane_ABC[j]) return normal_ABC[j+1];
}
 
char decryption(char b) {
    for (int j = 0; j < 33; j++)
        if (b == insane_ABC[j]) return normal_ABC[j-1];
}
 
int main() {
    int c, kod;
    setlocale(LC_ALL, "Russian");
    string s;
    cout << "Введите строку: ";
    getline(cin, s);
    cout << "Выберите операцию: " << endl;
    cout << "   1 - зашифровать" << endl;
    cout << "   2 - расшифровать" << endl;
    cout << "Ваш выбор: ";
    cin >> kod;
    c = s.length();
    switch(kod) {
        case 1:
            for (int i = 0; i < c; i++)
                if (s[i] >= ' ' && s[i] <= 'п')
                    if (s[i] != 'п') s[i] = encryption(s[i]);
                    else s[i] = normal_ABC[0];
            break;
        case 2:
            for (int i = 0; i < c; i++)
                if (s[i] >= ' ' && s[i] <= 'п')
                    if (s[i] != ' ') s[i] = decryption(s[i]);
                    else s[i] = normal_ABC[33];
            break;
    }
    cout << endl << "Результат: " << s;
    _getch();
    return 0;
}
1
vetal0007
29 / 29 / 1
Регистрация: 11.02.2012
Сообщений: 339
24.05.2013, 15:45 #14
стоп так оно некорректно копирует... Вот
1
Вложения
Тип файла: rar Shifr.rar (654 байт, 11 просмотров)
semb
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 9
24.05.2013, 15:54  [ТС] #15
В строке insane_ABC[] = "бвгдеёжзийклмнпорстуфхцчшщъыьэюяа" записанно это?
А то везде insane_ABC[] = "*ЎўЈ¤Ґс¦§Ё©Є«¬*®Їабвгдежзийклмноп".
0
24.05.2013, 15:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2013, 15:54
Привет! Вот еще темы с ответами:

Текстовый редактор. Зашифровать текст. - C++
подскажите пожалуйста не пойму что надо сделать??? &quot;файл должен храниться в зашифрованном виде: над каждым симво-лом файла произвести...

Зашифровать текст, используя таблицу ASCII-кодов - C++
Помогите зашифровать данный текст, используя таблицу ASCII-кодов: Компилятор. Добавлено через 7 минут #include &lt;iostream&gt; ...

Зашифровать текст методом простой одинарной перестановки - C++
Кто умеет писать коды по шифрованию текста? Добавлено через 37 секунд Кто умеет писать коды по шифрованию текста?

Зашифровать текст, записанный русскими буквами и знаками препинания - C++
Чтобы зашифровать текст, записанный с помощью русских букв и знаков препинания, его можно переписать, заменив каждую букву непосредственно...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru