Implementação Torre De Hanoi
Pesquisas Acadêmicas: Implementação Torre De Hanoi. Pesquise 862.000+ trabalhos acadêmicosPor: MrRenan • 4/6/2013 • 884 Palavras (4 Páginas) • 474 Visualizações
Implementação da Torre de Hanoi
Primeiramente fizemos o levantamento de todas as funções básicas que o programa iria utilizar, juntamente com as variáveis necessárias.
Em seguida, construímos as 3 torres como vetores distintos, e também 3 variáveis para guardar os seus topos, para que pudéssemos
implementá-los como pilhas. Para tanto, criamos 4 funções de controle das mesmas: isEmpty, isFull, push e pop, seguindo o padrão
comum da construção de pilhas.
As próximas funções criadas foram "novo_jogo", "ver_torres" e "mover"; a novo jogo deveria reinicializar as variáveis para retornar
ao seu estado inicial – nela também pretendemos implementar algo para escolher o número de discos –, porém nos deparamos com alguns
obstáculos. Dentre estes, os principais são:
1- Os vetores precisam ter tamanhos variáveis para que se possa modificar o número de discos
2- É preciso utilizar uma variável global para guardar o número de discos
As soluções propostas pelo grupo foram:
1- Utilizar vetores de tamanho fixo, e avisar ao usuário que ele tem um range (faixa) limitado de opções para o número de discos,
de x até y - ex: (3 até 10)
2- Alterar todas as funções e blocos do código que acessem a TAM_MAX para utilizarem uma variável criada no main – para tanto é
necessário alterar os parâmetros de algumas funções, alguns for's e if's do código.
Pensamos também em criar uma função para o menu, mas como centralizamos o local onde esse é acessado, não foi necessário, visto que a função
somente seria chamada naquele local, não havendo reaproveitamento de código.
A função ver_torres foi a que mais sofreu alterações desde o início, pois cada membro pensou em uma interface diferente. No fim,
aceitamos a sugestão do professor, mas ainda precisamos retirar os 'ZEROS' e trocá-los por 'NADA' ou traços.
Pensamos em fazer o menu com diversas opções, economizando a entrada de dadosd pelo usuário, ex:
1- Mover da torre 1 para torre 2
2- Mover da torre 1 para torre 3
3- Mover da torre 2 para torre 1
E por ai vai, mas isso estava fora das especificações do programa, então alteramos para que recebesse a entrada:
dX tY tZ - ex: d1 t1 t2 (disco 1, da torre 1 para torre 2
Tivemos um pouco de dificuldade em recuperar corretamente os valores digitados pelo usuário e na consistência das informações,
mas ao que tudo indica está tudo correto agora.
Também debatemos que a primeira entrada (a especificação do disco) - dX é um tanto quanto sem sentido, visto que nas regras da
Torre de Hanoi, somente é possível mover o disco que está em cima. Acreditamos que isso só dificultou um pouco a programação
do código, pois é preciso verificar a consistência do disco que o usuário tem, e isso também afeta a usabilidade, porque é possível
que o usuário digite um disco inválido, e pelo que notamos, isso acontece com certa frequência.
A nossa sugestão é que o programa aceite apenas a entrada tY tZ, evitando esse desconforto.
Das dificuldades, a maior foi no SWITCH da opção 'Mover' do menu: nela precisávamos saber quais torres foram selecionadas,
...