O objetivo desta atividade é usar uma árvore binária para armazenar características de animais e através de perguntas e respostas, navegar na árvore. A árvore binária terá a seguinte organização:
Um programa parecido, construído através da mesma técnica descrita acima, pode ser encontrado na web em http://www.animalgame.com/play/.
A técnica é bem simples e despretensiosa. Se você quiser conhecer uma abordagem mais elaborada para esse tipo de problema, dê uma olhada em http://www.20q.org/ (depois de concluir o trabalho, é claro!). Se você usa Linux numa máquina Intel (ou equivalente), pode experimentar o programa chamado 'bichos' em http://www.ic.unicamp.br/~vanini/mc202/programas/bichos , que apresenta o comportamento esperado para esta atividade.
No 'diálogo'
mostrado a
seguir, o texto em preto corresponde à saída
escrita pelo programa e o texto em
azul, corresponde ao texto digitado pelo usuário.
Inicialmente, a árvore vai
estar vazia e o programa começa perguntando por um novo
bicho.
dê uma
característica do bicho:
tem
penas
nome do
bicho:
galinha
continua ?(s/n)
s
o bicho
tem penas ? (s/n)
s
o bicho
é galinha ? (s/n)
n
dê uma
característica do bicho:
se
alimenta do
néctar das flores
nome do
bicho:
beija-flor
continua ?(s/n)
s
o bicho
tem penas ? (s/n)
s
o bicho
é galinha ? (s/n)
s
(!!!)
viu como sou esperto ?
continua ? (s/n)
n
Toda a memória alocada dinamicamente deve ser liberada.
Para a leitura das respostas do usuário use a função getLine() mostrada abaixo. Como essa função usa gets(), o gcc pode gerar um alerta indicando que a mesma não deve ser usada - não se preocupe com isso.
char* copyStr(char* str){
char *p = (char*) malloc(strlen(str)+1);
strcpy(p,str);
}
char* getLine(){
char line[256];
if(gets(line)!= NULL)
return copyStr(line);
else return NULL;
}