elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Error en programacion de LZW
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error en programacion de LZW  (Leído 1,347 veces)
euroesp

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Error en programacion de LZW
« en: 8 Noviembre 2016, 03:08 am »

Buenas,

Me he propuesto programar un compresor LZW que me comprima un archivo llamado "quijote.txt". He programado el algoritmo que creo que deberia funcionar, pero no lo hace. ¿Podrían decirme donde esta el error?.

Código:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>

#define dim1 1000
#define dim2 2000

int main(){

 size_t totCarac = 1000;
 size_t totCarac2 = 2000;
 char *palabras[100000] = {" ","a","b","c","d","e","f","g","h","i","j","k","l","m","n","ñ","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","Ñ","O","P","Q","R","S","T","U","V","W","X","Y","Z","Á","É","Í","Ó","Ú","á","é","í","ó","ú","À","È","Ì","Ò","Ù","à","è","ì","ò","ù","Ä","Ë","Ï","Ö","Ü","ä","ë","ï","ö","ü","!","¡","?","¿","#","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","@","[","]","^","_","`","{","}","ç","|","~","«","»","¬","·","€","$"};
 char P[dim1] = "", C[dim1] = "";
 char *PC = ( char* )malloc( totCarac2 * sizeof(char) );
 int i1,i2,i3,i4,valor1,valor2,indice1,indice2,componente;

  FILE* quijote = NULL;
  FILE* quijotec = NULL;

  quijote = fopen("quijote.txt", "r");
  quijotec = fopen("quijotec.txt", "w");


  fscanf(quijote,"%c",&P);
  fscanf(quijote,"%c",&C);
  componente = 133;

  printf("%c \n",P); <------- este print me da algo que no corresponde con el primer caracter del archivo



  while (!feof(quijote)){

    PC = strcpy(PC,P);
    PC = strcat(PC,C);


    for(i3=1;i3<=100000;i3++){

        valor1 = strcmp(PC,palabras[i3-1]);

        if (valor1 == 0){
            indice1 = i3;
            P2 = strcpy(P,PC);
            goto Palma1;
        }
    }

    palabras[componente] = strcpy(palabras[componente],PC);

    for(i4=1;i4<=100000;i4++){

        valor2 = strcmp(P,palabras[i4-1]);

        if (valor2 == 0){
            indice2 = i3;
            goto Palma2;
        }
    }

    Palma2:

    fprintf(quijotec, "%i ", indice2);
    P2 = strcpy(P,C);
    fscanf("%c",&C);

    Palma1:

      }

    fclose(quijote);
    fclose(quijotec);
    printf("Fin");


  return 0;
  }



Cabe destacar que el documento a comprimir tiene letras, simbolos y espacios en blanco, todos incluidos en el model ASCI.

Gracias por adelantado.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines