34 lines
2.0 KiB
Markdown
34 lines
2.0 KiB
Markdown
# Dokumentácia
|
|
|
|
## Zadanie
|
|
Vytvorte program na kompresiu a dekompresiu súborov pomocou dvoch rôznych algoritmov: RLE (Run Length Encoding) a LZ78. Program musí podporovať nasledujúce operácie:
|
|
- Kompresia pomocou RLE
|
|
- Dekompresia pomocou RLE
|
|
- Kompresia pomocou LZ78
|
|
- Dekompresia pomocou LZ78
|
|
|
|
## Stručný opis funkčnosti
|
|
Program `compressor` umožňuje kompresiu a dekompresiu súborov pomocou algoritmov RLE a LZ78. Program sa spúšťa z príkazového riadku s nasledujúcimi argumentmi:
|
|
- `-c infile outfile`: Kompresia pomocou algoritmu RLE
|
|
- `-d infile outfile`: Dekompresia pomocou algoritmu RLE
|
|
- `-c2 infile outfile`: Kompresia pomocou algoritmu LZ78
|
|
- `-d2 infile outfile`: Dekompresia pomocou algoritmu LZ78
|
|
- `-h`: Zobrazenie pomoci
|
|
|
|
## Stručný opis riešenia
|
|
Program je implementovaný v jazyku C a obsahuje nasledujúce súbory:
|
|
- `main.c`: Obsahuje hlavný program, ktorý spracováva argumenty príkazového riadku a volá príslušné funkcie na kompresiu a dekompresiu.
|
|
- `compressor.c`: Obsahuje implementáciu kompresných a dekompresných algoritmov RLE a LZ78.
|
|
- `compressor.h`: Hlavičkový súbor s deklaráciami funkcií.
|
|
- `Makefile`: Súbor na kompiláciu programu pomocou nástroja `make`.
|
|
|
|
Algoritmus RLE komprimuje súbor tak, že nahradí opakujúce sa znaky dvojicou (znak, počet opakovaní). Algoritmus LZ78 komprimuje súbor tak, že nahradí opakujúce sa sekvencie znakov dvojicou (index, znak), kde index odkazuje na predchádzajúcu sekvenciu v slovníku.
|
|
|
|
## Podmienky za ktorých funguje
|
|
Program bol testovaný na systéme Windows s kompilátorom GCC. Na kompiláciu programu použite príkaz `make` v príkazovom riadku. Program vyžaduje, aby vstupné súbory existovali a boli čitateľné. Výstupné súbory budú vytvorené alebo prepísané.
|
|
|
|
## Zoznam použitých zdrojov
|
|
- Dokumentácia k jazyku C
|
|
- Wikipedia: [Run Length Encoding](https://en.wikipedia.org/wiki/Run-length_encoding)
|
|
- Wikipedia: [LZ78](https://en.wikipedia.org/wiki/LZ78)
|
|
- [Stránka predmetu](https://student.kemt.fei.tuke.sk/usaa/home) |