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

функции для шифрации и дешифрации некоторого текста - C++

24.05.2010, 10:09. Просмотров 2977. Ответов 22
Метки нет (Все метки)

добрый вечер....
нужна помощь....срочно


Фраза шифруется следующим образом: посе первых двух символов вставляется слог БУ,после следующих двух вставляется КА, это повторяется до тех пор, пока в фразе есть хотя бы две буквы. Например, фраза
Я ОТ БАБУШКИ УШЕЛ
Шифруется так:
Я БУОТКА ББУАБКАУШБУКИКА УБУШЕКАЛ

Напишите функции для шифрации и дешифрации некоторого текста. Функции main в качестве аргументов командной строки передавайте kod для кодирования или dekod для декодирования текста. Программу запускайте с переназначением стандартного ввода на файл.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2010, 10:09
Я подобрал для вас темы с готовыми решениями и ответами на вопрос функции для шифрации и дешифрации некоторого текста (C++):

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

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

Создать шаблон некоторого класса, возможно, реализованного с применением некоторого серверного класса
Добрый день, Уважаемые профессионалы. Прошу помочь в решении задачи. ...

Для каждого из некоторого количества значений натурального N
Для каждого из некоторого количества значений натурального N, получаемых от...

По числу z найти такое число x, что z = (2x +1)*2^y для некоторого y
Найти по числу z число x такое, что z = (2x +1)*2^y для некоторого y....

В зависимости от значения некоторого выражения вычислить значения функции y(x), определенной на отрезке [a;b],
Добрый вечер, помогите пожалуйста решить задачку С++ на тему"Сочетания циклов и...

22
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
24.05.2010, 21:12 #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
118
119
120
121
122
123
124
125
#include <stdio.h>
 
char *input_file;
char *output_file;
 
char *cod(char *str)
{
    char *buff;
    int i, j;
    
    buff = (char *)malloc(512 * sizeof(char));
    
    i = 0;
    j = 0;
    
    do
    {
        buff[i++] = str[j++];
        buff[i++] = str[j++];
        
        if ((str[j] != '\0') || (str[j + 1] != '\0'))
        {
            buff[i++] = 'ГЃ';
            buff[i++] = 'Г“';
        }
        
        buff[i++] = str[j++];
        buff[i++] = str[j++];
        
        if ((str[j] != '\0') || (str[j + 1] != '\0'))
        {
            buff[i++] = 'ГЉ';
            buff[i++] = 'ГЂ';
        }
    }
    while (str[j] != '\0');
    
    return buff;
}
 
char *decod(char *str)
{
    char *buff;
    int i, j;
    
    buff = (char *)malloc(512 * sizeof(char));
    
    i = 0;
    j = 0;
    
    do
    {
        buff[i++] = str[j++];
        buff[i++] = str[j++];
        
        j += 2;
        
        buff[i++] = str[j++];
        buff[i++] = str[j++];
        
        j += 2;
    }
    while (str[j] != '\0');
    
    return buff;
}
 
 
int main(int argc, char *argv[])
{
    FILE *in;
    
    if ((in = fopen("in.txt", "r")) == NULL)
        return -1;
    
    char instr[256];
    char *outstr;
    
    if (argc != 4)
    {
        printf("Ispol'zuite sintacsis coder.exe [input_file] [output_file] [command]\ngde input_file - imya vhodnogo faila\noutput_file - imya vihodnogo faila\ncommand - comanda kod/dekod");
        return 0;
    }
    
    input_file = argv[1];
    output_file = argv[2];
    
    if (!strcmp("kod", argv[3]) || !strcmp("dekod", argv[3]))
    {
        FILE *in;
        
        if ((in = fopen(input_file, "r")) == NULL)
            return -1;
        
        fgets(instr, 256, in);
        
        if (!strcmp("kod", argv[3]))
            outstr = cod(instr);
        else
            if (!strcmp("dekod", argv[3]))
                outstr = decod(instr);
            else
            {
                printf("V kachestve command ispolzuyte slovo \"kod\" ili \"dekod\"");
                return 0;
            }
        
        FILE *out;
        
        if ((out = fopen(output_file, "w")) == NULL)
            return -1;
        
        fputs(outstr, out);
        
        fclose(in);
        fclose(out);
    }
    else
    {
        printf("V kachestve command ispolzuyte slovo \"kod\" ili \"dekod\"");
        return 0;
    }
    
    return 0;
}
Добавлено через 1 минуту
Запуск - через командную строку
0
Nikolai89
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 46
25.05.2010, 20:21  [ТС] #3
Ругается на fopen и выдаёт в консоле плиз эникей и только
0
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
25.05.2010, 20:35 #4
как конкретно ругается?
0
Nikolai89
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 46
25.05.2010, 20:45  [ТС] #5
>c:\users\jelovers\d​ocuments\visual studio 2008\projects\лабора​торная 5\лабораторная 5\лабораторная 5.cpp(77) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNI​NGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio​.h(237): см. объявление 'fopen'
1>c:\users\jelovers\​documents\visual studio 2008\projects\лабора​торная 5\лабораторная 5\лабораторная 5.cpp(96) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNI​NGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio​.h(237): см. объявление 'fopen'
1>c:\users\jelovers\​documents\visual studio 2008\projects\лабора​торная 5\лабораторная 5\лабораторная 5.cpp(114) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNI​NGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio​.h(237): см. объявление 'fopen'
1>Компоновка...
1>Внедрение манифеста...

а в консоле пишет плиз эни кей
0
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
25.05.2010, 20:47 #6
Ну вам же написали, попробуйте вместо fopen использовать fopen_s
0
Nikolai89
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 46
25.05.2010, 21:04  [ТС] #7
\лабораторная 5.cpp(77) : error C2660: fopen_s: функция не принимает 2 аргументов
\лабораторная 5.cpp(96) : error C2660: fopen_s: функция не принимает 2 аргументов
\лабораторная 5.cpp(114) : error C2660: fopen_s: функция не принимает 2 аргументов
поменял все
0
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
25.05.2010, 21:16 #8
Попробуй так:
вместо

C
1
2
if ((in = fopen(input_file, "r")) == NULL)
            return -1;
используй

C
1
fopen_s(&in, input_file, "r");
вместо

C
1
2
if ((out = fopen(output_file, "w")) == NULL)
            return -1;
C
1
fopen_s(&out, output_file, "w");
И убери это

C
1
2
3
4
FILE *in;
    
    if ((in = fopen("in.txt", "r")) == NULL)
        return -1;
а то я тестил с помощью этого, забыл убрать
0
Nikolai89
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 46
25.05.2010, 21:26  [ТС] #9
У меня выводит все слова в ' ' и потом эни кей
0
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
25.05.2010, 21:30 #10
Не понял...

Добавлено через 3 минуты
Скажи, как ты запускаешь программу?
0
Nikolai89
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 46
25.05.2010, 21:30  [ТС] #11
контрл ф5
0
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
25.05.2010, 21:40 #12
Отлично...
Запускай так:
открываешь консоль (WinKey + R, вводишь cmd)
там пишешь cd /D полный_путь_к_файлу
затем имя_файла имя_входного_текстовика имя_выходного_текстовика команда

Пример:
Предположим, файл лежит у меня в папке E:\Users\silent\Desktop\Си\cod_decod
Сам файл называется cod_decod.exe
Входной файл - in.txt
Выходной файл - out.txt
Я хочу закодировать входной файл (команда kod)
Тогда я должен написать в командной строке
cd \D E:\Users\silent\Desktop\Си\cod_decod
Нажать Enter, а потом ввести
cod_decod in.txt out.txt kod
0
Nikolai89
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 46
25.05.2010, 21:47  [ТС] #13
Тоесть скинутый мне листинг не надо менять ?
0
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
25.05.2010, 21:49 #14
Ну, кроме того, что я сказал на счёт fopen_s

Добавлено через 50 секунд
Хотя, возможно, и без этого будет работать. Но приучи себя так отлаживать программы, чтобы компилятор не выдавал даже предупреждений.
0
Nikolai89
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 46
25.05.2010, 21:54  [ТС] #15
Ничего не получается, надо пойти руки об батарею выпрямить
0
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
25.05.2010, 21:56 #16

Послушайте, мы ведь не в чате. Пишите конкретно, что не получается.
Напишите полный путь к вашему файлу сюда, а так же название самого файла и имена входного и выходного файлов (с расширениями)
0
Nikolai89
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 46
25.05.2010, 22:01  [ТС] #17
У меня называется "Лабораторная 5" мне указывать так C:\Users\JeLovers\Documents\Visual Studio 2008\Projects\Лабораторная 5\Лабораторная 5\Лабораторная 5_cpp?

Добавлено через 2 минуты
пишит is not recognized as an internal or external command operable program or batch file
0
kazak
3057 / 2378 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
25.05.2010, 22:03 #18
В VS точно не помню, но чтобы подобные программы запускать из среды в меню Debug/Отладка найди пункт Параметры..., Запустить с папаметрами, Аргументы или что-то подобное и введи через пробел нужные значения.
0
Nikolai89
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 46
25.05.2010, 22:06  [ТС] #19
Я сделал так что бы смд было от Лабы 5
0
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
25.05.2010, 22:09 #20
Пишите так:
cd "C:\Users\JeLovers\Documents\Visual Studio 2008\Projects\Лабораторная 5\Лабораторная 5"
жми Enter
потом имя_исполняемого_файла (экзэшника!) имя_входного_файла (там должно быть записано не зашифрованное сообщение) имя_выходного_файла (туда запишется зашифрованное сообщение) kod
жми Enter
0
25.05.2010, 22:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2010, 22:09
Привет! Вот еще темы с решениями:

Вычислите, используя рекурсию, выражение y=x+2*x^2+3*x^4+ ... для некоторого n (n – количество рекурсивных вызовов)
Вычислите, используя рекурсию, выражение y=x+2*x^2+3*x^4+ ... для некоторого n...

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

Для каждого из некоторого количества натуральных чисел найти простой делитель наибольшой кратности
для каждого из некоторого количества натуральных чисел найти простой делитель...

комплекс подпрограмм для шифрации/дешифрации
помогите, пожалуйста,если кому интересно или кто вдруг знает. разработать...


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

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

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