С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
12 / 12 / 0
Регистрация: 20.02.2010
Сообщений: 55
1

программа кодирования текста

09.12.2010, 12:55. Показов 3702. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем добрый день
Есть такая программа,по кодированию текста в файле, с помощью ключа,который находится в другом файле и сохранение закодированого текста в 3 файл.

Но есть проблема,оно кодирует только первых 10 символов. Бился Бился и все никак не могу найти проблему. Подскажите как сделать так чтобы кодировало весь текст из файла,полностью.
Всем большое спасибо за помощь

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
#undef UNICODE                                                                                                
#include <iostream>                                                                                           
#include <math.h>                                                                                             
#include <fstream>                                                                                            
#include <string.h>                                                                                           
#include <Windows.h>                                                                                                                                                                                  
 
using namespace std;                                                                                          
#define sz 1024                                                                                               
char * code(char * str,char * salt)                                                                           
{                                                                                                             
    int s = strlen(str);                                                                                      
    int i = 0;                                                                                                
    int * buf = (int*)malloc(strlen(str)*5);                                                                  
    char * cde = (char*)malloc(1024*1024*10);                                                                 
    while(i != s)                                                                                             
    {                                                                                                         
        buf[i] = (((int)str[i]) ^ ((int)salt[i])*(int)pow((double)strlen(str),3)*((int)salt[i]));             
        cde[i] = (char)buf[i];                                                                                
        i++;                                                                                                  
        cde[s+1] = 0x00;                                                                                      
    }                                                                                                         
    free(buf);                                                                                                
    return cde;                                                                                               
    free(cde);                                                                                                
}                                                                                                             
char * dcode(char * _str,char * _salt)                                                                        
{                                                                                                             
    int _s = strlen(_str);                                                                                    
    int _i = 0;                                                                                               
    int * _buf = (int*)malloc(strlen(_str)*5);                                                                
    char * _cde = (char*)malloc(1024*1024*10);                                                                
    while(_i != _s)                                                                                           
    {                                                                                                         
        _buf[_i] = (((int)_str[_i]) ^ ((int)_salt[_i])*(int)pow((double)strlen(_str),3)*((int)_salt[_i]));    
        _cde[_i] = (char)_buf[_i];                                                                            
        _i++;                                                                                                 
        _cde[_s+1] = 0x00;                                                                                    
    }                                                                                                         
    free(_buf);                                                                                                  
    return _cde;                                                                                              
    free(_cde);                                                                                               
}                                                                                                             
                                                                                                              
int main()                                                                                                    
{                                                                                                             
    SetConsoleTitle("CRYPTO ALGORITM");                                                                          //
loop:                                                                                                         
    cout<<"Code / Decode>";                                                                                   
    char Code[1024];                                                                                          
    cin.getline(Code,sz);                                                                                     
    if(strncmp(Code,"Code",sz) == 0)                                                                          
    {                                                                                                         
       Code;                                                                                                
    char * text = (char*)malloc(1024*1024*10);                                                                
    char * buff = (char*)malloc(1024*1024*10);                                                                
    char * dBUF_ = (char*)malloc(1024*1024*10);                                                               
    char FLE[1024];                                                                                           
    char CFLE[1024];                                                                                          
    char SALT[1024];                                                                                          
    char dSALT[1024];                                                                                         
    char dBUF[1024];                                                                                          
    cout<<"Vvedite pyt k faily>";                                                                             
    cin.getline(FLE,sz);                                                                                      
    cout<<"Vvedite pyt k faily-kly4a>";                                                                             
    cin.getline(SALT,sz);                                                                                     
    FILE * pSALT = fopen(SALT,"r");                                                                           
    while(fgets(dBUF,255,pSALT))                                                                              
    {                                                                                                         
        dBUF_ = dBUF;                                                                                         
    }                                                                                                         
    FILE * LoadF = fopen(FLE,"r");                                                                            
    while(fgets(buff,255,LoadF))                                                                              
    {                                                                                                         
        text = buff;                                                                                          
    }                                                                                                         
    cout<<"Vvedite pyt kyda soxranyat kodirovanii text>";                                                                    
    cin.getline(CFLE,sz);                                                                                     
    ofstream out_file(CFLE);                                                                                  
    FILE * Load2F = fopen(CFLE,"w");                                                                          
    if(Load2F != NULL)                                                                                       
    {                                                                                                         
        fputs(code(text,dBUF_),Load2F);                                                                  
        fclose(Load2F);                                                                                      
    }                                                                                                        
    }                                                                                                         
    else if(strncmp(Code,"Decode",sz) == 0)                                                                  
    {                                                                                                        
    //    Decode                                                                                              
    char * _text = (char*)malloc(1024*1024*10);                                                              
    char * _buff = (char*)malloc(1024*1024*10);                                                               
    char * _dBUF_ = (char*)malloc(1024*1024*10);                                                              
    char _FLE[1024];                                                                                          
    char _CFLE[1024];                                                                                         
    char _SALT[1024];                                                                                         
    char dBUF_[1024];                                                                                         
    cout<<"Vvedite pyt k faily s zakodirovannim textom>";                                                                             
    cin.getline(_FLE,sz);                                                                                     
    cout<<"Vvedite pyt k faily-kly4a>";                                                                            
    cin.getline(_SALT,sz);                                                                                   
    FILE * _pSALT = fopen(_SALT,"r");                                                                        
    while(fgets(dBUF_,255,_pSALT))                                                                            
    {                                                                                                        
        _dBUF_ = dBUF_;                                                                                       
    }                                                                                                        
    FILE * _LoadF = fopen(_FLE,"r");                                                                         
    while(fgets(_buff,255,_LoadF))                                                                            
    {                                                                                                         
        _text = _buff;                                                                                       
    }                                                                                                        
    cout<<"Vvedite pyt kyda soxranyat razkodirovanii text>";                                                                     
    cin.getline(_CFLE,sz);                                                                                   
    ofstream out_file(_CFLE);                                                                                
    FILE * _Load2F = fopen(_CFLE,"w");                                                                       
    if(_Load2F != NULL)                                                                                      
    {                                                                                                        
        fputs(dcode(_text,_dBUF_),_Load2F);                                                                  
        fclose(_Load2F);                                                                                     
    }                                                                                                        
    }                                                                                                         
    goto loop;                                                                                               
    return 0;                                                                                                
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Блог
09.12.2010, 12:55
Ответы с готовыми решениями:

Данные строкового типа(программа для введения текста, его кодирования и вывода результата)
Последняя просьба! Придумать і сложить программу для введения текста, его кодирования и вывода...

Программа кодирования и декодирования
Написать программу кодирования и декодирования последовательности символов длины N. Алгоритм...

Программа кодирования текста методом замены слов
Доброго времени суток.Поскольку с бэйсиком знаком лишь поверхностно то,прошу Вашей помощи в...

Программа для кодирования №2
&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html;...

9
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
09.12.2010, 13:11 2
C++
1
dBUF_ = dBUF;
так нельзя делать, в dBUF_ указатель на память, из-за этого он потеряется

C++
1
_dBUF_ = dBUF_;
аналогично

C++
1
int * buf = (int*)malloc(strlen(str)*5);
эта строка не учитывает длину одного int элемента

ещё в функции code() очень много раз вычисляется длина str через strlen()
нужно вычислить один раз и это вычисленное значение везде использовать, чтобы не делать лишних операций всё время

C++
1
2
3
    free(buf);                                                                                                
    return cde;                                                                                               
    free(cde);
тоже неправильно, после return ничего не может стоять, так как никогда не выполнится
это наблюдается в обеих функциях

зачем в разных функциях делать разные имена переменных
переменные внутри одной функции касаются только этой функции, другие функции их не видят, поэтому во всех функциях можно использовать одни и те же имена
0
12 / 12 / 0
Регистрация: 20.02.2010
Сообщений: 55
09.12.2010, 13:16  [ТС] 3
Оу...много ошибок.
А подскажите как их исправить. Хотя бы,что касаеться количества кодируемых файлов и вычисление длины str через strlen()
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
09.12.2010, 13:20 4
C++
1
dBUF_ = dBUF;
C++
1
strcpy(dBUF_, dBUF);
C++
1
text = buff;
C++
1
strcpy(text, buff);
и дальше такие же

C++
1
2
3
4
    while(fgets(dBUF_,255,_pSALT))                                                                            
    {                                                                                                        
        _dBUF_ = dBUF_;                                                                                       
    }
кстати, вообще всё построение цикла неправильное
что он делает, записывает в одну строку, перезаписывая то, что там было ?
1
12 / 12 / 0
Регистрация: 20.02.2010
Сообщений: 55
09.12.2010, 13:25  [ТС] 5
Я эту программку на этом же форуме и нашел
Вот ссылка
https://www.cyberforum.ru/cpp-... post492241
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
09.12.2010, 13:29 6
надо было обратить внимание на goto и искать другую

потому что это всё ещё не так заметно, то, что я здесь описал, а вот то, что перемешаны два языка - это на поверхности
он юзает cin.getline(), а потом тут же юзает fgets(), не зная, что getline() - это и есть цппшный fgets()
0
12 / 12 / 0
Регистрация: 20.02.2010
Сообщений: 55
09.12.2010, 13:34  [ТС] 7
Спасибо большое за помощь
Но,все таки вы можете подсказать,как исправить код,так чтобы программа кодировала весь текст.
Мне вот это главное,для начала,а все остальное второстепенное.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
09.12.2010, 13:46 8
думаешь она правильно кодирует ?
нет уверенности, что он правильно выделяет память
то, как он выделяет, больше похоже на хаос
также он неправильно читает из файла

то, что он их не проверяет, открылись ли они - это ещё семечки

C++
1
2
    ofstream out_file(CFLE);
    FILE * Load2F = fopen(CFLE,"w");
это вообще бред, out_file потом нигде не используется и переоткрывается повторно
0
12 / 12 / 0
Регистрация: 20.02.2010
Сообщений: 55
09.12.2010, 13:48  [ТС] 9
И я кстате еще нашел в чем причина кодирования определенного количества букв. Потому что программа считывает количество символов в файле ключе. Чем больше символов тем больше символов в закодированном тексте
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
09.12.2010, 13:53 10
такие вещи не должны базироваться на strlen(), fgets()
strlen() ориентируется по нуль-символу, который может быть в тексте, если кодируемый файл бинарный, а fgets() будет читать построчно, что тоже не нужно, так как читать надо блоками
это касается и исходного текста и ключа, который также может быть с любыми символами
0
09.12.2010, 13:53
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
09.12.2010, 13:53
Помогаю со студенческими работами здесь

Программа для кодирования
Всем привет! Есть программа для кодирования... &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta...

Нужны методы фазового кодирования, расширения спектра, кодирования эхо-сигнала
Здравствуйте. Столкнулась с проблемой: взяла у препода задание по стеганографическим методам и их...

Программа для кодирования видео
Здравствуйте. Нужно уменьшить размер фильма. С 18 Гб, до 10 Гб... примерно. Что посоветуете ?

Функции кодирования и декодирования текста циклическим сдвигом букв алфавита
Не понимаю как написать. Задача: Реализовать функции кодирования и декодирования текста...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Блоги программистов
Модель полного двоичного суматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(шес­­­­­­тиби­тный асихронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9 Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
Инструкция по установке python3.13.1 в Debian 12
AlexSky-coder 03.01.2025
sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget. . .
Затестил триггеры. архив проекта прилагаю с GOA файлами в настройках архиватора проектов.
Hrethgir 03.01.2025
В этот раз нет закольцованности, потому что от неё только глюки, как я понял, логика не вырезанная. Триггеры очень быстрые если верить измерениям с помощью анализатора от Gowin. Есть ещё регистры,. . .
Python в помощь DevOps
IT_Exp 03.01.2025
Причины использования Python в работе DevOps Python стал неотъемлемой частью мира DevOps, и это не случайно. Этот язык программирования обладает множеством преимуществ, которые делают его. . .
Angular vs React vs Vue.js
BasicMan 03.01.2025
О, друзья-разработчики и просто любопытные читатели! Сегодня мы отправимся в увлекательное путешествие по миру фронтенд-разработки, и первой остановкой станет Angular – этакий строгий немецкий. . .
Сравнение микросервисов и монолита
cpp_developer 03.01.2025
Достоинства и недостатки микросервисной архитектуры Микросервисная архитектура представляет собой современный подход к построению программных систем, где приложение разбивается на набор небольших. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru