Update sk1/README.md
This commit is contained in:
		
							parent
							
								
									5aea3e8697
								
							
						
					
					
						commit
						50a5920166
					
				| @ -0,0 +1,95 @@ | ||||
| Zadanie: | ||||
| 
 | ||||
| Do programu sa zadáva súbor so stlačenými údajmi, ktoré boli zakódované pomocou algoritmov RLE alebo LZ77. Úlohou programu je zabezpečiť správnu kompresiu a dekompresiu textových a binárnych súborov. | ||||
| 
 | ||||
| Program podporuje nasledujúce funkcie: | ||||
| 
 | ||||
| Kompresia súborov pomocou RLE (Run-Length Encoding). | ||||
| Dekompresia súborov stlačených pomocou RLE. | ||||
| Kompresia súborov pomocou LZ77 (Sliding Window Compression). | ||||
| Dekompresia súborov stlačených pomocou LZ77. | ||||
| Formát vstupu: | ||||
| 
 | ||||
| Vstupné súbory môžu byť textové alebo binárne. | ||||
| Pre RLE každý stlačený blok pozostáva z bajtu znaku a jeho počtu. | ||||
| Pre LZ77 sa používajú trojice: offset, dĺžka, nasledujúci znak. | ||||
| Formát výstupu: | ||||
| 
 | ||||
| Veľkosť stlačeného alebo dekomprimovaného súboru v bajtoch. | ||||
| V prípade chyby sa vypíše správa s vysvetlením a program ukončí svoju činnosť. | ||||
| Program kontroluje správnosť vstupných údajov a spracováva chyby, napríklad poškodený alebo neúplný súbor kompresie. | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Implementácia: | ||||
| 
 | ||||
| Program sa skladá z: | ||||
| 
 | ||||
| Hlavných štruktúr: | ||||
| 
 | ||||
| struct LZ77Triple: Štruktúra, ktorá predstavuje trojice (offset, length, next_char) pre LZ77. | ||||
| Funkcií: | ||||
| 
 | ||||
| int rle_compress(const char* input_filename, const char* output_filename) | ||||
| Implementuje algoritmus kompresie RLE. | ||||
| Číta znaky a počíta ich opakovania. | ||||
| Vracia veľkosť stlačeného súboru alebo kód chyby. | ||||
| 
 | ||||
| int rle_decompress(const char* input_filename, const char* output_filename) | ||||
| Rekonštruuje pôvodný súbor zo stlačených údajov RLE. | ||||
| Vracia veľkosť dekomprimovaného súboru alebo kód chyby. | ||||
| 
 | ||||
| int lz77_compress(const char* input_filename, const char* output_filename) | ||||
| Implementuje algoritmus LZ77 s použitím posuvného okna a vyrovnávacej pamäte na predbežné prezeranie. | ||||
| Vracia veľkosť stlačeného súboru alebo kód chyby. | ||||
| 
 | ||||
| int lz77_decompress(const char* input_filename, const char* output_filename) | ||||
| Rekonštruuje pôvodný súbor zo stlačených údajov LZ77. | ||||
| Vracia veľkosť dekomprimovaného súboru alebo kód chyby. | ||||
| 
 | ||||
| int main(int argc, char* argv[]) | ||||
| Spracováva argumenty príkazového riadka. | ||||
| Volá príslušné funkcie na základe zadaných argumentov (-c, -d, -c2, -d2). | ||||
| Vypisuje výsledky alebo chybové hlásenia. | ||||
| 
 | ||||
| void display_help() | ||||
| Vypisuje informačnú nápovedu o dostupných príkazoch. | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Štrukturálny opis riešenia | ||||
| 
 | ||||
| Projekt je postavený pomocou modulárneho prístupu. Hlavné komponenty: | ||||
| 
 | ||||
| compressor.h: Hlavičkový súbor obsahujúci deklarácie funkcií na kompresiu a dekompresiu. | ||||
| compressor.c: Implementácia algoritmov RLE a LZ77 pre kompresiu a dekompresiu. | ||||
| main.c: Hlavný modul, ktorý spracováva argumenty príkazového riadka a volá príslušné funkcie na kompresiu alebo dekompresiu. | ||||
| Implementácia: | ||||
| 
 | ||||
| RLE: Funguje na princípe ukladania znaku a počtu jeho opakovaní. | ||||
| LZ77: Používa posuvné okno na vyhľadávanie opakujúcich sa sekvencií bajtov. | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Prevádzkové podmienky | ||||
| 
 | ||||
| Program funguje správne za nasledujúcich podmienok: | ||||
| 
 | ||||
| Súbory sú dostupné na čítanie a zápis. | ||||
| Vstupné údaje neobsahujú chyby, ako je nesúlad formátu alebo poškodenie. | ||||
| Pridelená pamäť na spracovanie údajov nepresahuje limity systému. | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Zoznam použitých zdrojov | ||||
| 
 | ||||
| Wikipedia - Run Length Encoding - https://en.wikipedia.org/wiki/Run-length_encoding | ||||
| 
 | ||||
| Wikipedia - LZ77 and LZ78 - https://en.wikipedia.org/wiki/LZ77_and_LZ78 | ||||
| 
 | ||||
| GeeksforGeeks - Run Length Encoding Algorithm - https://www.geeksforgeeks.org/run-length-encoding/ | ||||
| 
 | ||||
| Stackoverflow - LZ77 Algorithm - https://stackoverflow.com/questions/71708874/could-you-give-me-some-explain-of-lz77-algorithm | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user