MC202 EF - Atividade de Laboratório no. 5

Descrição do Problema: Construção de um 'Dicionário de Sinônimos'
Entrada de Dados
Exemplo de uma sessão de usuário
Data Limite para Entrega

Descrição do Problema: Construção de um 'Dicionário de Sinônimos'

Use uma árvore binária de busca para construir um 'dicionário de sinônimos', definindo funções para
  • inserir uma palavra e seu sinônimo na árvore de busca. Caso a palavra já esteja presente no dicionário, o sinônimo da mesma deve ser substituído pelo novo valor.
  • procurar pelo sinônimo de uma palavra.
  • substituir o sinônimo de uma palavra por outro.
  • excluir uma palavra (e seu sinônimo) da árvore de busca.
  • verificar se a árvore obedece à definição de 'árvore binária de busca'
  • O seu programa de testes dessas funções deve liberar toda a memória alocada durante a execução do mesmo. Você pode supor que as palavras e seus sinônimos não terão mais que 256 caracteres, mas o programa só deve manter na árvore o espaço necessário para os mesmos, nenhum caracter a mais.
    As operações de busca, inserção, alteração e exclusão de elementos no dicionário implementado como árvore binária de busca não devem ser recursivas (todas elas podem ser implementadas sem fazer uso de uma pilha auxiliar).

    Entrada de Dados

    A entrada de dados será feita em duas partes:
  • o conjunto inicial de sinônimos será lido a partir de um arquivo texto.
  • as consultas e alterações no dicionário serão feitas pelo usuário de forma interativa através da entrada e saída padrão (teclado e vídeo).
  • Arquivo de Entrada

    O arquivo de entrada contendo o conjunto inicial de sinônimos a ser representado na árvore binária de busca, é formado por uma seqüência de linhas onde cada linha contém uma palavra e seu sinônimo separados por um espaço em branco. A última linha desse arquivo contém "# #", indicando 'fim de entrada'. Exemplo de arquivo de entrada:
                  néscio estúpido
    conserto reparo
    discriminar distinguir
    acutilar golpear
    nitrir relinchar
    espadana labareda
    relinchar nitrir
    ornar enfeitar
    gáudio júbilo
    futrica fuxico
    insigne celebre
    insanidade demência
    desatino disparate
    crista cimo
    pileque bebedeira
    adelgaçar desbastar
    piparote peteleco
    profícuo proveitoso
    concernente referente
    funéreo fúnebre
    preferência predileção
    cerviz nuca
    veado cervo
    chapada planalto
    desalento desânimo
    insistir perseverar
    manhoso jeitoso
    referente concernente
    frontispício fachada
    gola colarinho
    compromisso obrigação
    insolência desafôro
    inspeção exame
    comportamento conduta
    # #

    Entrada Interativa

    A entrada interativa é feita através de comandos digitados pelo usuário. Um comando consiste numa linha de texto onde o primeiro caracter indica o comando a ser executado. Os comandos possíveis:
                  p palavra               --- procura pelo significado de uma palavra
    i palavra significado --- inclui uma nova palavra e seu significado no dicionário
    s palavra significado --- substitui o significado atual de uma palavra
    x palavra --- exclui a palavra (e seu significado) do dicionário
    v --- verifica se a árvore (ainda) obedece à definição de árvore binária de busca
    f --- encerra execução do programa

    Exemplo de uma sessão de usuário

                  >p nitrir
    ---> nitrir: relinchar
    >p espadana
    ---> espadana: labareda
    >p abantesma
    ---> abantesma: palavra desconhecida
    >i abantesma fantasma
    ---> abantesma: fantasma
    >i manhoso chorão
    ---> manhoso: palavra já existe no dicionário
    >s crista pico
    ---> crista: pico
    >x nitrir
    ---> nitrir: palavra excluída
    >x energumeno
    ---> energumeno: palavra desconhecida
    >v
    ---> verificação: a árvore obedece à definição de árvore binária de busca
    >f

               

    Data Limite para Entrega

    O projeto deverá ser entregue por email ao assistente de ensino até o dia 29/09/07