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

RLE компресія на с++

23.03.2011, 17:29. Показов 3916. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть програма
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
int main(int argc, char* argv[])
{ FILE *Pfile1 = fopen("test2.txt","rb");
        if(Pfile1 == NULL)
        {
            cout <<"eror opening"<<endl;
        return 1;
        }
    FILE *Pfile = fopen("test.txt","wt");
        if(Pfile == NULL)
        {
            cout <<"eror opening"<<endl;
        return 1;
        }
char ch;
        int ns =0,pt=0; char ch1=0;
        while((ch = fgetc(Pfile1))!=EOF)
        {  ch1 = fgetc(Pfile1);   
            if(ch==ch1)
        
            pt++;
         
            
                 
            else
                if(pt >0)
                {fputc(pt,Pfile);
                  fputc(ch1,Pfile);
                  pt=0;
                }
                if(pt==0)
                 fputc(ch,Pfile);
        }
        fclose(Pfile1);
        Pfile1 = NULL;
        fclose(Pfile);
        Pfile = NULL;
        return 0;
}
как заставить работать (делать компресію)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.03.2011, 17:29
Ответы с готовыми решениями:

Разработайте приложение rle.exe, выполняющее RLE-компрессию бинарных файлов
Разработайте приложение rle.exe, выполняющее RLE-компрессию бинарных файлов с сильно разреженным содержимым, а также декомпрессию...

Метод RLE
Написать программу сжатия полутонового bmp* файла по методу RLE

алгоритм RLE
Нужна помощь. Чтобы сделать алгоритм сжатия RLE на с++

26
0 / 0 / 0
Регистрация: 18.03.2011
Сообщений: 70
25.03.2011, 16:33  [ТС]
ну почему нет никаких идей
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
25.03.2011, 19:41
Судя по коду, не может быть более 128 одинаковых символов подряд.

Добавлено через 33 секунды
И вообще, блоки ифов выдели нормально.

Добавлено через 2 минуты
Если память мне не изменяет, EOF - два символа. В один char он не влезет.

Добавлено через 1 минуту
А декомпрессия работает с точностью до наоборот:
считываете символ, считываете количество повторений и помещаете этот символ в строку столько раз, сколько указано.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
26.03.2011, 01:22
Deviaphan, EOF вообщем является макросом над -1(в основном) - так что тут все нормуль. fgetc может вертать EOF.
1
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
26.03.2011, 05:51
И правда.)

Но раз уж код на С++, следует использовать потоки, вместо FILE.
0
0 / 0 / 0
Регистрация: 18.03.2011
Сообщений: 70
27.03.2011, 12:11  [ТС]
если можно про потоки поподробней
или силочку плз
0
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
27.03.2011, 12:17
Цитата Сообщение от mato Посмотреть сообщение
если можно про потоки поподробней
или силочку плз
курим iostream, fstream В любом учебнике или гугле
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
27.03.2011, 12:44
http://msdn.microsoft.com/en-u... 60%29.aspx
0
0 / 0 / 0
Регистрация: 18.03.2011
Сообщений: 70
27.03.2011, 14:38  [ТС]
почему в 2 цикле после прохода указателя Pfile1 возвращающийся в первый цикл то указатель Pfile1 передает последний элемент, єсле я использую указатель в первом цикле то он не делает копию указателя в фторой цикл почему? и как ето можно сделать а то программа у меня сверяет сначала первое число и второе а потом 3 и 4 а мне надо чтоб 1 и 2 потом 2 и 3 или как реализовать чтоб брать число и сверять со всеми остатними но опять с указателями проблема помогите с реализацией
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
27.03.2011, 14:45
Сколько в код не смотрел, увидел только один цикл...
0
0 / 0 / 0
Регистрация: 18.03.2011
Сообщений: 70
27.03.2011, 14:51  [ТС]
новий вариант програми
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
int main(int argc, char* argv[])
{ FILE *Pfile1 = fopen("test2.txt","rb");
        if(Pfile1 == NULL)
        {
            cout <<"eror opening"<<endl;
        return 1;
        }
    FILE *Pfile = fopen("test.txt","wt");
        if(Pfile == NULL)
        {
            cout <<"eror opening"<<endl;
        return 1;
        }
char ch,ch1,pt =0;
 
        
        while((ch = fgetc(Pfile1))!=EOF)
        {
            
            FILE *Pfile2 = fopen("test2.txt","rb");
        if(Pfile2 == NULL)
        {
            cout <<"eror opening"<<endl;
        return 1;
        }
            while((ch1 = fgetc(Pfile2))!=EOF)
          { 
            if(ch==ch1)
        
            pt++;
         
           }fclose(Pfile2);
                 
        
                if(pt >1)
                {fputc(pt,Pfile);
                  fputc(ch,Pfile);
                  pt=0;
                }
                if(pt==0&&pt == 1)
                 fputc(ch,Pfile);
        }
        fclose(Pfile1);
        Pfile1 = NULL;
        fclose(Pfile);
        Pfile = NULL;
        return 0;
}
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
27.03.2011, 14:53
Цитата Сообщение от mato Посмотреть сообщение
FILE *Pfile2 = fopen("test2.txt","rb"); if(Pfile1 == NULL) { cout <<"eror opening"<<endl; return 1; }
Афыпка
0
0 / 0 / 0
Регистрация: 18.03.2011
Сообщений: 70
27.03.2011, 14:55  [ТС]
Цитата Сообщение от Deviaphan Посмотреть сообщение
Сколько в код не смотрел, увидел только один цикл...
просто я переделал и не виклал новий вариант программ извиняюсь, есле можете помогите с вторим вариантом уже 3 дня долблю и ни чего не получается

Добавлено через 1 минуту
Цитата Сообщение от Deviaphan Посмотреть сообщение
Афыпка
виправил
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
27.03.2011, 14:55
Я уже запутался. Ты же про декомпрессию спрашиваешь, а показываешь код компрессии.
0
0 / 0 / 0
Регистрация: 18.03.2011
Сообщений: 70
27.03.2011, 15:02  [ТС]
ну я и компресию не могу зделать
а декомпресію просто перепутал должин написать бил компресія

Добавлено через 3 минуты
просто изучаю с++ и тут попал на такую задачу с rle компресією и шо то ни как не могу решить и в google не могу найти ни чого подходящего там есть но через класи а я к ним ищо не дошол
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
27.03.2011, 15:05
Ты не сможешь проверить работоспособность компрессии, пока не напишешь и декомпрессию.
Итак.
У тебя не компилируется или не работает?
0
0 / 0 / 0
Регистрация: 18.03.2011
Сообщений: 70
27.03.2011, 15:15  [ТС]
не работает

компилируетса нормально
1 не передаетса переменая pt в функции ( fputc(pt,Pfile))
передаю (8555000ccccc222233333)
получаю( 555000ccccc22223333 3)
а должен 835305с4253)
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
27.03.2011, 15:22
Так ты записывай не в текстовый, а в бинарный файл. Или pt приводи к символу.
0
0 / 0 / 0
Регистрация: 18.03.2011
Сообщений: 70
27.03.2011, 16:53  [ТС]
а как записать в бінарний файл

Добавлено через 11 минут
pt - ето символ
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
27.03.2011, 17:12
Цитата Сообщение от mato Посмотреть сообщение
FILE *Pfile = fopen("test.txt","wt");
Цитата Сообщение от mato Посмотреть сообщение
FILE *Pfile2 = fopen("test2.txt","rb");
НА запись открываешь в текстовом виде, а на чтение в бинарном.
Когда в текстовом виде пишешь символ с непечатаемым кодом получаешь кракозябру.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.03.2011, 17:12
Помогаю со студенческими работами здесь

Компрессия RLE
Здравствуйте. Требуется помощь по реализации кода. Задание следующее : Реализовать класс RLE который будет компрессить массив байт и...

Алгоритм RLE
Прошу помочь выйти мне из тупика) Подсказки,исправление ли направление что и где исправлять. Задачи: 1. Написать функции чтения и...

Алгоритм RLE
Всех приветствую, нужна помощь, уже устал, суть такая: необходимо реализовать алгоритм RLE, при этом единичные символы записываются так,...

Алгоритм RLE
Нужно закодировать введённый текст посредством алгоритма RLE Вот код программы, никак не могу разобраться, в чём проблема in DNA ...

Компрессия и декомпрессия RLE
Всем привет. Ребята подскажите пожалуйста, что нужно изменить в этом коде, чтобы он расшифровывал символы, которые были зашифрованы с...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru