usaa24/sk1
2025-01-28 19:28:00 +00:00
..
compressor.c Обновить sk1/compressor.c 2025-01-28 19:08:59 +00:00
compressor.h Обновить sk1/compressor.h 2025-01-19 14:09:10 +00:00
main.c Обновить sk1/main.c 2025-01-19 14:08:36 +00:00
Makefile Обновить sk1/Makefile 2025-01-26 19:26:24 +00:00
README.md Обновить sk1/README.md 2025-01-28 19:28:00 +00:00

Nástroj na kompresiu súborov

Popis úlohy:

Tento projekt implementuje nástroj na kompresiu a dekompresiu súborov pomocou dvoch rôznych kompresných algoritmov: Huffmanovo kódovanie a LZ77. Nástroj si poradí s binárnymi súbormi až do veľkosti 10 MB. Komprimovaný súbor by mal byť menší aspoň o 10 % a dekomprimovaný súbor by sa mal presne zhodovať s pôvodným súborom.

Rozhranie príkazového riadka: Komprimovať súbor: ./compressor -c vstupný súbor výstupný súbor

Komprimuje vstupný súbor pomocou zadaného kompresného algoritmu a výsledok zapíše do výstupného súboru.

Dekomprimovať súbor: ./compressor -d skomprimovaný nekomprimovaný

Dekomprimuje komprimovaný súbor a výsledok zapíše do nekomprimovaného súboru.

Pomocník: ./kompresor -h

Zobrazuje pomoc a informácie o používaní.

Obmedzenia: Program pracuje s binárnymi súbormi do 10 MB. Kompresia by mala zmenšiť veľkosť súboru aspoň o 10 %. Dekomprimovaný súbor sa musí zhodovať s pôvodným súborom. Používa iba štandardné knižnice. Riešenie môže byť inšpirované verejne dostupným kódom, ale musí byť vyvinuté nezávisle a musí odkazovať na všetky takéto zdroje. Prehľad funkcií Program ponúka dva kompresné algoritmy:

Huffmanovo kódovanie: Algoritmus bezstratovej kompresie údajov, ktorý priraďuje vstupným znakom kódy s premenlivou dĺžkou na základe ich frekvencií. LZ77 Compression: Algoritmus založený na slovníku, ktorý komprimuje údaje nahradením opakovaných výskytov údajov odkazmi na predchádzajúce výskyty vo vstupnom toku. Prehľad riešení Riešenie je štruktúrované do niekoľkých komponentov:

kompresor.h: Obsahuje deklarácie funkcií pre kompresiu a dekompresiu. kompresor.c: Implementuje kompresné a dekompresné algoritmy. main.c: Obsahuje hlavnú funkciu, správu vstupov z príkazového riadka a volanie príslušných funkcií. Makefile: Obsahuje pravidlá zostavovania na zostavenie projektu pomocou príkazu make. README.md: Dokumentácia vysvetľujúca funkčnosť a dizajn projektu. Kľúčové funkcie: compress_1: Komprimuje súbor pomocou Huffmanovho kódovania a zapisuje komprimovaný súbor. decompress_1: Dekomprimuje súbor, ktorý bol komprimovaný pomocou Huffmanovho kódovania. compress_2: Komprimuje súbor pomocou LZ77 a zapisuje komprimovaný súbor. decompress_2: Dekomprimuje súbor, ktorý bol komprimovaný pomocou LZ77. Predpoklady: Vstupné súbory sú binárne súbory s maximálnou veľkosťou 10 MB. Program predpokladá použitie štandardných I/O operácií na čítanie a zápis binárnych dát. Testovanie Nástroj bol testovaný pomocou súborov z korpusu Canterbury, aby sa zabezpečila jeho funkčnosť a efektívnosť kompresie.

Použité zdroje: Video na YouTube o algoritme fungovania týchto kódovacích algoritmov