• Miércoles 26 de Junio de 2024, 07:27

Autor Tema:  Problema  (Leído 833 veces)

luisre

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Problema
« en: Martes 4 de Mayo de 2010, 18:39 »
0
Saludos.

Necesito hacer un GZIP para la universidad, espero que podais ayudarme.

Uno de los modulos que necesito inplementar es el algoritmo de Lempel-Ziv, que consiste en crear una clase.

Las funciones de la clase deben leer una cadena de caracteres (con espacios), buscar por la cadena una subcadena y sustituirla por una referencia a la primera aparicion.

Es un poco lioso asi que os pongo un ejemplo:

Hay una vaca. La vaca es blanca.
deberia quedar asi:
Hay una vaca. L[REF] es blanca.
REF1 hace referencia a la primera vez que aparece la subcadena [a vaca].
por lo tanto quedaria asi:
Hay una vaca. L[REF(6,9)] es blanca.
donde 6 indica el tamaòo de la cadena de referencia y que esta a una distancia de 9 caracteres de la primera aparicion.
despues de analizar toda la cadena y hacer las sustituciones se pasa cada caracter a ASCII y la referencia de esta forma:

...     codASCII     codASCII     codASCII     codlongitud[6]     codigolongitud[6]     codigodistancia[9]     codigodistancia[9]     codASCII     codASCII     ...
(el texto entre espacios se supone el contenido de la posicion i-esima del vector de caracteres).

Mi duda es:
-Una vez encontrada una subcadena repetida como la sustituyo por las 4 posiciones de codigos de longitud y distancia.
-Si implemento el tipo de dato como:
private:
       char literal;
       int longitud;
       int distancia;
como se que distancia tiene la cadena para no pasarme buscando.

Gracias por adelantado.