Algoritmia - Analista en Sistemas

 
Vista:

Analista en Sistemas

Publicado por Manuel Gonzalez (1 intervención) el 14/06/2001 17:56:42
Algoritmo de Tokens

Necesito hacer un programa en C para comprimir archivos de texto utilizando token si alguien tiene alguna idea para tirar de algoritmos de tokens Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Compresión de archivos de texto en C utilizando Run-Length Encoding con tókens

Publicado por Alejandro (307 intervenciones) el 27/02/2024 21:29:14
Para realizar la compresión de archivos de texto utilizando tokens en C, puedes considerar un enfoque simple como la codificación de longitud de ejecución (Run-Length Encoding) que es un método básico de compresión. En este enfoque, los caracteres repetidos se reemplazan por una secuencia que indica cuántas veces se repite el carácter.

Aquí tienes un ejemplo básico de cómo podrías implementar un programa simple de compresión utilizando tókens en C:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
 
void comprimirArchivo(FILE* archivoEntrada, FILE* archivoSalida) {
    char caracterActual, caracterAnterior;
    int contador = 1;
 
    // Leer el primer carácter del archivo
    caracterAnterior = fgetc(archivoEntrada);
 
    while ((caracterActual = fgetc(archivoEntrada)) != EOF) {
        // Comprimir utilizando Run-Length Encoding
        if (caracterActual == caracterAnterior) {
            contador++;
        } else {
            fprintf(archivoSalida, "%d%c", contador, caracterAnterior);
            contador = 1;
            caracterAnterior = caracterActual;
        }
    }
 
    // Imprimir la última secuencia
    fprintf(archivoSalida, "%d%c", contador, caracterAnterior);
}
 
int main() {
    FILE* archivoEntrada;
    FILE* archivoSalida;
 
    archivoEntrada = fopen("archivo.txt", "r");
    archivoSalida = fopen("archivo_comprimido.txt", "w");
 
    if (archivoEntrada == NULL || archivoSalida == NULL) {
        perror("Error al abrir el archivo");
        return 1;
    }
 
    comprimirArchivo(archivoEntrada, archivoSalida);
 
    fclose(archivoEntrada);
    fclose(archivoSalida);
 
    return 0;
}

Este programa toma un archivo de texto (`archivo.txt` en este caso) y genera un archivo comprimido (`archivo_comprimido.txt`) utilizando Run-Length Encoding. La compresión se realiza mediante la identificación de secuencias de caracteres idénticos y su sustitución por un número que indica cuántas veces se repite el carácter.

Ten en cuenta que este es solo un ejemplo básico, y dependiendo de tus necesidades y del tipo de archivos de texto con los que estés trabajando, podrías necesitar implementar algoritmos de compresión más avanzados.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar