Graduação em <Estrutura de Dados I>
|
||||||||||||||||||||||||||||||||
Atividades Durante o período o aluno deverá desenvolver 3 trabalhos que consistem basicamente de implementações dos algoritmos vistos em sala de aula e que complementam a sua formação em termos de prática de programação e de aprendizado de uma linguagem de programação. Os trabalhos colaboram com as 3 avaliações escritas para compor as notas do aluno.
|
1 6 15 10 21 14 9 20 5 16 19 2 7 22 11 8 13 24 17 4 25 18 3 12 23 Sugestão:
Algoritmo usando Backtracking Inicialize N e a posição inicial (x0,y0) i:=0; Repita Se há posições válidas a serem alcançadas a partir de (xi,yi) Selecione a próxima posição Empilhe e visite a escolha; Passe para a próxima iteração i = i+1; Se nãoCancele a escolha; Desempilhe o último estado válido Até obter sucesso ou não haver mais candidatos a escolher
Observação: não usar recursividade nem geração de permutações |
|||||||||||||||||||||||||||||||
Linguagens permitidas Os trabalhos podem ser desenvolvidos apenas nas seguintes linguagens de programação: C, Pascal, C++ e Java
Apresentação dos trabalhos Os trabalhos devem ser entregues na data determinada em formato de documento e podem eventualmente, a critério do professor, serem apresentados em laboratório na mesma data ou data posterior à entrega. Os documentos devem ser "zipados" contendo todos os arquivos solicitados pelo professor, tais como: fonte, executável e relatório de resultados. O arquivo zipado deve ser entregue ao professor via email ou via mídia apropriada (CD, disquete). No nome do arquivo zipado deve constar o nome e o código do aluno. A pedido do professor, o aluno poderá ainda entregar uma cópia impressa do relatório de resultados até a data determinada. Relatório de resultados O relatório de resultados documenta o trabalho de implementação, apresentando desde a justificativa para a solução algorítmica empregada pelo aluno até os resultados obtidos por ele e as principais dificuldades encontradas. Ele deve ser suficientemente completo para permitir ao professor o pleno entendimento e avaliação do trabalho realizado pelo aluno. Dentre outros recursos, o aluno deve lançar mão de trechos de código fonte que expliquem determinadas rotinas, imagem de telas de execução, gráficos, impressão de arquivos de resultados, etc. O formato do relatório de resultados pode ser baixado aqui.
|
Multiplicador de Inteiros
Imensos.
Dados dois inteiros imensos armazenados em listas encadeadas, produzir
uma terceira lista encadeada contendo o resultado da
multiplicação entre eles.
A multiplicação pode ser realizada da forma como aprendemos, isto é, a soma deslocada de várias multiplicações: 1 1 1 1 1 1 1 1 1 1 (lista 1) x 1 1 1 1 1 (lista 2) ========================= 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ===================== 1 2 3 4 5 5 5 5 5 5 4 3 2 1
|
|||||||||||||||||||||||||||||||
|
Árvore de Huffman
ou Árvore de Jogos (escolher uma opção).
Objetivo Huffman: implementar um programa que
leia um arquivo qualquer e gere o código de huffman (código de
comprimento variável) Objetivo Jogos: implementar uma versão para o jogo da captura usando o procedimento min-max. |
|||||||||||||||||||||||||||||||
*** Árvore de Hufman *** Links: http://en.wikipedia.org/wiki/Huffman_coding http://inf.unisinos.br/~ari/estrut/huffman/compactacao.htm Passos básicos:
Avaliação básica: de 0,0 a 2,5 pontos, dependendo da apresentação em laboratório, da
qualidade da interface com o usuário e grau de dificuldade dos
algoritmos |
||||||||||||||||||||||||||||||||
Avaliação opcional de 2,5 a 4,0 pontos, dependendo da implementação de uma ou mais das seguintes etapas: |
||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
*** Árvore de Jogos *** Implementar uma das seguintes versões (com tabuleiro reduzido): ** Bin Laden no Paquistão (ele apenas foge) ** Bin Laden em Nova Iorque (ele ataca também) ** Bin Laden no Brasil |
||||||||||||||||||||||||||||||||