Trabalho 3 de Redes I. Compactador LZW. Desenvolvido por: Leandro Bertazzo Rodrigues GRR20143009 Matheus Rotondano de Camargo GRR20136059 Para compilar o programa deve-se entrar com a seguinte linha de comando: $ gcc -o LZW LZW.c E o programa deve ser executado da seguinte maneira: $ ./LZW Onde: é o arquivo que se deseja compactar. será o código do arquivo compactado. será o arquivo descompactado. Foram criado os tipos String e Dicionario. String é um char*, que será cada palavra que for guardada no dicionário. Dicionario é uma String*, ou seja, um char**; Dicionario é um vetor e cada um dos seus elementos contém uma palavra do dicionário. O dicionário é inicializado com todos os 255 caracteres da tabela ASCII e a partir dele podem ser feitas as funções LZW() para compactar e desLZW() para descompactar. As funções que utilizam o dicionário (além as de compressão e descompressão) são estaNoDicionario(), que diz se uma string está ou não no dicionário, insereNoDicionario(), que insere uma string no dicionario, posicaoNoDicionario() que retorna a posição de uma string dentro do dicionario e intEstaNoDicionario() que é igual a função estaNoDicionario(), só ela busca o elemento a partir de um inteiro, e não de uma string. Também foi criada uma variavel global tam para monitorar o tamanho do dicionario. Ela é inicializada em 0 e passa a valer 255 quando o dicionário é inicializado. Sempre que ocorre uma insersão tam é incrementado em um. Bugs conhecidos: No final da descompactação, geralmente os últimos dois caracteres são impressos de novo, então se o texto original terminar com "dois.", após a descompatação o final do texto será "dois.s."