usaa24/sk1/README.md
Bohdan Kapliuk db623c28ad sk1
2025-01-12 15:32:10 +02:00

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)