Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
RosyRose
0 / 0 / 0
Регистрация: 28.07.2012
Сообщений: 23
1

Шифрование строки путем прибавления к коду символа числа

23.08.2012, 21:35. Просмотров 1380. Ответов 2
Метки нет (Все метки)

Задача:Дан текст(несколько строк) в файле F1.Описать функцию работы с текстом, представленным в виде строки символов, которая "шифрует" строку путем прибавления к коду символа некоторого постоянного числа, а также функцию обратного преобразования.Шифрованные строки записать в файл F2.

p.s если не трудно, с комментариями
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2012, 21:35
Ответы с готовыми решениями:

Получить новую матрицу путем прибавления к каждому элементу данной матрицы ее наибольшего элемента
Дана действительная матрица размера nxm. Получить новую матрицу путем...

Создать программу, которая отображает простые числа, но не методом деления, а прибавления
Нужно создать программу, которая отображает простые числа, но не методом...

Шифрование текста путем замены символов
Здравствуйте! Нужна Ваша помощь. Нужно провести шифрование предложения заменой...

Шифрование текста путем замены букв
Чтобы зашифровать текст, записанный с помощью латинских букв, его можно...

Шифрование. Дешифрование по N. И по коду
Написать программу по шифрованию, дешифрованию. Можно их выделить в функции....

2
Пaтрик
427 / 395 / 132
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
23.08.2012, 21:56 2
Лучший ответ Сообщение было отмечено RosyRose как решение

Решение

Шифрование:
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
#include <iostream>
#include <string>
#include <fstream>
#include <algorithm>
#include <sstream>
#include <functional>
 
int main()
{
    // Число которое будем прибавлять к каждому символу
    // Для шифрации
    const char key = 4;
    // Исходный файл
    std::ifstream input("f1.txt");
    // Считываем весть текст
    std::ostringstream stream;
    stream << input.rdbuf();
    std::string str = stream.str();
    // Закрываем файл
    input.close();
    // Прибавляем ко всем символам число
    std::transform(
        str.begin(), str.end(), str.begin(), 
        std::bind2nd(std::plus<char>(), key));
    // Выводим в f2.txt полученную строку
    std::ofstream("f2.txt") << str;
}
Дешифрование:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <fstream>
#include <algorithm>
#include <sstream>
#include <functional>
 
int main()
{
    const char key = 4;
    std::ifstream input("f2.txt");
    std::ostringstream stream;
    stream << input.rdbuf();
    std::string str = stream.str();
    input.close();
    std::transform(
        str.begin(), str.end(), str.begin(), 
        std::bind2nd(std::minus<char>(), key));
    std::ofstream("f1.txt") << str;
}
1
Intel~lect
135 / 124 / 14
Регистрация: 03.07.2012
Сообщений: 355
23.08.2012, 22:26 3
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
#include <iostream>
#include <windows.h>
#include <fstream>
using namespace std;
 
void shifr_in(char str[], int key);   // зашифровка одной строки текста
void shifr_out(char str[], int key);  // расшифровка
 
int main()
{
    const int key = 3;  // постоянное число для прибавления к коду каждого символа
    char line[500];     // для временного хранения одной строки текста
    ifstream fin;       // файл для чтения
    ofstream fout;      // файл для записи
 
    // Зашифровка и запись в F2.txt
    fin.open("F1.txt"); // открытие файлов.
    fout.open("F2.txt");
 
    while ( fin.good() )    // пока ввод успешен и не достигнут конец файла ...
    {
        fin.getline(line, 500); // считываем одну строку во временную переменную line
        shifr_in(line, key);    // зашифровка этой строки
        fout << line << endl;   // запись зашифрованной строки в файл F2.txt
    }
 
    fin.close();        // закрытие файлов
    fout.close();
 
 
    // Расшифровка и запись в F3.txt
    fin.open("F2.txt");     // открытие файлов
    fout.open("F3.txt");
 
    while ( fin.good() )    // пока ввод успешен и не достигнут конец файла, ...
    {
        fin.getline(line, 500); // считываем одну строку зашифрованного текста во времнную переменную
        shifr_out(line, key);   // дешифровка этой строки
        fout << line << endl;   // запись в F3.txt
    }
 
    fin.close();    // закрытие файлов
    fout.close();
 
    return 0;
}
 
 
void shifr_in(char str[], int key)
{
    for (int i=0; str[i]; i++)
        str[i] += key;
}
 
void shifr_out(char str[], int key)
{
    for (int i=0; str[i]; i++)
        str[i] -= key;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2012, 22:26

получение символа по коду и назад
есть char a=&quot;A&quot;; какие в с++ есть функции для получения кода символа? т.е....

Шифрование/Дешифрование - теряются два символа
Теряются два последних символа при декодировании ( если в цикле i &lt;= size...

Как скопировать подстроку из строки до определенного символа? Или удалить, начиная с этого символа
Добрый вечер. Ответ искал, но не нашёл. Предположим, есть строка: ABC|DEF ...


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

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

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