Você está na página 1de 3

Universidade Federal da Bahia Graduao em Cincia da Computao MATA54 - Estruturas de Dados e Algoritmos II Primeiro Trabalho Prtico Prof.

Flvio Assis
Semestre 2013.2 - 26 de novembro de 2013

Hashing com rvore Binria

Descrio Geral do Trabalho

Neste trabalho o aluno implementar um arquivo estruturado como uma tabela hash em que o mtodo de resoluo de coliso rvore Binria utilizado. Cada registro do arquivo ter os seguintes dados: uma chave, de valor inteiro no negativo; uma cadeia de, no mximo, 20 caracteres, que ir armazenar um nome; e um outro valor inteiro no negativo, que ir armazenar uma idade. O programa dever conter uma constante: TAMANHO_ARQUIVO: indica o nmero mximo de registros do arquivo. O valor inicial desta constante deve ser 11. O programa deve ser feito de forma que este valor possa ser modicado. A funo de hashing a ser utilizada, denominada h, : h(chave) = chave mod TAMANHO_ARQUIVO Observao importante: o programa deve manter as atualizaes em arquivo. A correo levar em considerao que o estado dos dados persistente. Com isto, um teste pode ser feito, por exemplo, inserindo-se um registro, terminando a execuo do programa e fazendo uma consulta ao registro em nova invocao do programa. Neste caso o registro deve ainda estar no arquivo. O arquivo deve ser armazenado em formato binrio.

Formato de Entrada e Sada

A entrada constar de uma sequncia de operaes sobre o arquivo. As operaes e seus formatos esto descritos abaixo: 1. insere registro: esta operao conter quatro linhas. A primeira linha conter a letra i. A segunda conter um valor de chave. A terceira conter uma sequncia de at 20 caracteres. A quarta linha conter um valor de idade. A sequncia de caracteres da terceira linha conter qualquer 1

sequncia de letras (minsculas, sem acento, nem cedilha) e espaos, sendo que o primeiro e ltimo caracteres no sero espao. Esta operao verica se j h registro no arquivo com o valor de chave indicado. Se sim, esta operao gera na sada, em uma mesma linha, a sequncia de caracteres chave ja existente:, seguida de um espao, seguido do valor da chave. Se a chave no existir, a operao insere o registro no arquivo, sem gerar sada. 2. consulta registro: esta operao conter duas linhas. A primeira linha conter a letra c. A segunda conter um valor de chave. Se houver registro no arquivo com o valor de chave indicado, esta operao gera na sada a sequncia de caracteres chave:, seguida de um espao, seguido do valor da chave. Em seguida, na prxima linha escreve o valor do nome associado ao registro, e, na linha seguinte, o valor da idade associada ao registro. Se no houver registro no arquivo com o valor de chave indicado, esta operao gera na sada a sequncia de caracteres chave nao encontrada:, seguida de um espao, seguido do valor da chave. 3. remove registro: esta operao conter duas linhas. A primeira linha conter a letra r. A segunda conter um valor de chave. Se houver registro no arquivo com o valor de chave indicado, esta operao causar a remoo do registro e no gerar sada. Se no houver registro no arquivo com o valor de chave indicado, esta operao gera na sada a sequncia de caracteres chave nao encontrada:, seguida de um espao, seguido do valor da chave. 4. imprime arquivo: esta operao conter apenas uma linha, contendo a letra p. Esta operao imprimir o formato do arquivo, da forma a seguir. Os registros sero apresentados, um em cada linha, em ordem, do registro de ndice 0 at o registro de ndice T AM AN HO_ARQU IV O 1. Cada linha conter: o ndice do registro, seguido de dois pontos (:), seguido de um espao. Se o registro estiver vazio, a sequncia de caracteres vazio dever ser apresentada. Se o registro contiver dados, deve ser apresentada a chave do registro, seguida de um espao, seguida da sequncia de caracteres (nome), seguida de um espao, seguido da idade. Se o registro estiver marcado como apagado, deve ser apresentado o smbolo *. 5. sequncia de tentativa de insero: esta operao conter duas linhas. A primeira conter a letra t. A segunda conter um valor de chave. Esta operao lista, uma por linha, as tentativas de insero de uma chave, SEM INSERIR A CHAVE. Garantidamente, no haver registro no arquivo com valor de chave igual ao indicado na operao. As tentativas devem ser listadas na ordem gerada pelo mtodo de rvore binria. Cada tentativa deve ser apresentada no seguinte formato: o valor do ndice do registro consultado, seguido por dois pontos (:), seguido de um espao. Em seguida, se o registro consultado estiver ocupado, o programa deve 2

apresentar a chave do registro. Caso contrrio, deve apresentar a sequncia de caracteres vazio. 6. mdia de acessos a registros do arquivo: esta operao conter apenas uma linha, contendo a letra m. Esta operao apresenta, em uma linha, apenas o valor da mdia do nmero de acessos a registros do arquivo, considerando-se uma consulta a cada um dos registros armazenados no arquivo. 7. trmino da sequncia de comandos: a sequncia de comandos ser terminada por uma linha com a letra e. Importante: o programa no deve gerar nenhum caractere a mais na sada, alm dos indicados acima. Em particular, o programa no deve conter menus. No deve haver espao entre linhas na sada. A sada deve apresentar os caracteres em letras minsculas.

Observaes

Trabalho individual. Data de entrega: 20/12/2013 Linguagens de programao permitidas: C, C++, Java ou Python. Observao Importante: Para as linguagens C, C++ e Java, somente trabalhos feitos utilizando-se os seguintes compiladores sero aceitos: C: gcc ou djgpp C++: g++ ou djgpp Java: compilador java recente, disponibilizado pela Oracle. No sero compilados trabalhos em outros compiladores! Erros ocasionados por uso de diferentes compiladores sero considerados erros do trabalho! O aluno dever armazenar seu trabalho, protegido por senha, na pgina da disciplina e enviar a senha para o email do professor (o aluno deve utilizar zip ).