Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2014, 22:25   #1
2ez4rage
Новичок
Джуниор
 
Регистрация: 12.12.2014
Сообщений: 2
По умолчанию Прокоментируйте код , пожалуйста

В интернете нашел пример реализации алгоритма Лемпеля-Зива. помогите , пожалуйста , разобраться с кодом. Заранее спасибо
Код:
#include <vector>
#include <string>
#include <iostream>
#include <fstream>
#include <utility>
#include <algorithm>
 
using namespace std;
 
class lz{
    char it;
    string buff;
public:
    lz(){
    };
    ~lz(){
    };
    void compress(){
        ifstream fin("input.txt");
        ofstream fout("outcode.txt");
        vector<string> table;
        int num=0,findval,prevval=0;
        table.push_back("");
        do{
        buff="";
        findval=0;
        do{
            prevval=findval;
            fin>>it;
            buff+=it;
            cout<<"!";
            findval=find(table.begin(),table.end(),buff)-table.begin();
        }while(findval!=table.end()-table.begin());
        table.push_back(buff);
        fout<<prevval<<it;
        }while(!fin.eof());
    };
    void decompress(){
        ifstream fin("outcode.txt");
        ofstream fout("output.txt");
        vector<string> table;
        table.push_back("");
        int num;
     while (!fin.eof( )){
        buff=table[0];
        fin>>num>>it;
        buff=table[num]+it;
        table.push_back(buff);
        fout<<buff;
    };
    };
};
main(){
    lz a;
    a.compress();
    a.decompress();
};
2ez4rage вне форума Ответить с цитированием
Старый 12.12.2014, 22:51   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Надо же...
И чего, работает код? Пакует верно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.12.2014, 22:55   #3
2ez4rage
Новичок
Джуниор
 
Регистрация: 12.12.2014
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Надо же...
И чего, работает код? Пакует верно?
вроде как да, но понять этот код...
input: Test programmu proverka
output: 0T0e0s0t0p0r0o0g6a0m10u5r7v2r0k0a16

или может кто поделится рабочим исходников Лемпеля-Зива, буду очень признателен!

Последний раз редактировалось Stilet; 12.12.2014 в 23:05.
2ez4rage вне форума Ответить с цитированием
Старый 12.12.2014, 23:06   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я бы тоже не отказался понять этот алгоритм.
Так что я его в общих чертах понял, а вот более обстоятельно...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедура для сортировки массива по возрастанию (прокоментируйте код программы на Delphi) Natashka Milashka Помощь студентам 1 20.05.2011 16:20
Прокоментируйте код Romario92 Общие вопросы C/C++ 13 30.10.2010 22:49
прокоментируйте код Romario92 Общие вопросы C/C++ 0 26.10.2010 00:28
Прокоментируйте код автризации вк DinamoBrynsk Работа с сетью в Delphi 2 13.09.2010 10:45
пожалуйста, прокоментируйте задачу! Rostzz Общие вопросы C/C++ 3 19.06.2008 01:32