From 5aea3e86979bf0b8c799e9c09051babb40fa47e2 Mon Sep 17 00:00:00 2001 From: Yurii Chechur Date: Thu, 26 Dec 2024 17:33:31 +0000 Subject: [PATCH] Update sk1/main.c --- sk1/main.c | 102 +++++++++++++++++++++++++---------------------------- 1 file changed, 48 insertions(+), 54 deletions(-) diff --git a/sk1/main.c b/sk1/main.c index 0e3435a..6d4c079 100644 --- a/sk1/main.c +++ b/sk1/main.c @@ -1,73 +1,65 @@ #include #include #include -#include "compressor.h" +#include "compressor.h" // Підключаємо заголовок void display_help(); int main(int argc, char *argv[]) { - if (argc < 5) { // Мінімум 4 аргументи (включаючи алгоритм та файл) + if (argc < 4) { // Мінімум 4 аргументи display_help(); return -1; } - char *action = argv[1]; // -c або -d - char *algorithm = argv[2]; // rle або lz77 - char *input_filename = argv[3]; // Вхідний файл - char *output_filename = argv[4]; // Вихідний файл + char *action = argv[1]; // -c, -d, -c2, -d2 + char *input_filename = argv[2]; // Вхідний файл + char *output_filename = argv[3]; // Вихідний файл - // Компресія + // Для першого алгоритму компресії (наприклад, RLE) if (strcmp(action, "-c") == 0) { - if (strcmp(algorithm, "rle") == 0) { - printf("Compressing using RLE...\n"); - int result = rle_compress(input_filename, output_filename); - if (result >= 0) { - printf("Compression successful. Compressed size: %d bytes\n", result); - } else { - printf("Compression failed with error code %d\n", result); - } - } else if (strcmp(algorithm, "lz77") == 0) { - printf("Compressing using LZ77...\n"); - int result = lz77_compress(input_filename, output_filename); - if (result >= 0) { - printf("Compression successful. Compressed size: %d bytes\n", result); - } else { - printf("Compression failed with error code %d\n", result); - } + printf("Compressing using RLE...\n"); + int result = rle_compress(input_filename, output_filename); + if (result >= 0) { + printf("Compression successful. Compressed size: %d bytes\n", result); } else { - printf("Unsupported compression algorithm. Use 'rle' or 'lz77'.\n"); - return -1; + printf("Compression failed with error code %d\n", result); } } - - // Декомпресія else if (strcmp(action, "-d") == 0) { - if (strcmp(algorithm, "rle") == 0) { - printf("Decompressing RLE...\n"); - int result = rle_decompress(input_filename, output_filename); - if (result >= 0) { - printf("Decompression successful. Decompressed size: %d bytes\n", result); - } else { - printf("Decompression failed with error code %d\n", result); - } - } else if (strcmp(algorithm, "lz77") == 0) { - printf("Decompressing LZ77...\n"); - int result = lz77_decompress(input_filename, output_filename); - if (result >= 0) { - printf("Decompression successful. Decompressed size: %d bytes\n", result); - } else { - printf("Decompression failed with error code %d\n", result); - } + printf("Decompressing RLE...\n"); + int result = rle_decompress(input_filename, output_filename); + if (result >= 0) { + printf("Decompression successful. Decompressed size: %d bytes\n", result); } else { - printf("Unsupported decompression algorithm. Use 'rle' or 'lz77'.\n"); - return -1; + printf("Decompression failed with error code %d\n", result); } } - // Показати довідку + // Для другого алгоритму компресії (наприклад, LZ77) + else if (strcmp(action, "-c2") == 0) { + printf("Compressing using LZ77...\n"); + int result = lz77_compress(input_filename, output_filename); + if (result >= 0) { + printf("Compression successful. Compressed size: %d bytes\n", result); + } else { + printf("Compression failed with error code %d\n", result); + } + } + else if (strcmp(action, "-d2") == 0) { + printf("Decompressing LZ77...\n"); + int result = lz77_decompress(input_filename, output_filename); + if (result >= 0) { + printf("Decompression successful. Decompressed size: %d bytes\n", result); + } else { + printf("Decompression failed with error code %d\n", result); + } + } + + // Для показу довідки else if (strcmp(action, "-h") == 0) { display_help(); - } else { + } + else { printf("Invalid arguments\n"); display_help(); return -1; @@ -78,12 +70,14 @@ int main(int argc, char *argv[]) { void display_help() { printf("Usage:\n"); - printf(" -c algorithm infile outfile : Compress infile using specified algorithm (rle or lz77).\n"); - printf(" -d algorithm infile outfile : Decompress infile using specified algorithm (rle or lz77).\n"); - printf(" -h : Display this help message.\n"); + printf(" -c infile outfile : Compress infile using RLE algorithm.\n"); + printf(" -d compressed uncompressed : Decompress compressed file using RLE.\n"); + printf(" -c2 infile outfile : Compress infile using LZ77 algorithm.\n"); + printf(" -d2 compressed uncompressed: Decompress compressed file using LZ77.\n"); + printf(" -h : Display this help message.\n"); printf("Examples:\n"); - printf(" compression_tool -c rle input.txt output.rle\n"); - printf(" compression_tool -c lz77 input.txt output.lz77\n"); - printf(" compression_tool -d rle input.rle output.txt\n"); - printf(" compression_tool -d lz77 input.lz77 output.txt\n"); + printf(" ./compressor -c input.txt output.rle\n"); + printf(" ./compressor -d output.rle decompressed.txt\n"); + printf(" ./compressor -c2 input.txt output.lz77\n"); + printf(" ./compressor -d2 output.lz77 decompressed.txt\n"); }