Universidade Federal do Paraná
Departamento de Informática
Disciplina CI056 - Algoritmos e Estruturas de Dados II
2o Período do BCC, IBM & MI
Prof. Elias P. Duarte Jr.

Trabalho Prático 1: Eleição Algorítmica

Data de Entrega (Disponibilização): 10 de outubro de 2018 (são 4 semanas de prazo, não haverá adiamento, organize-se!)

Os alunos devem informar por e-mail a URL do trabalho, usando o subject "TP-1 ALGORITMOS II 2018-2"

OBS.: O trabalho pode ser feito em dupla.

Neste trabalho você vai fazer um sistema que gerencia a votação durante as eleições. O sistema mantém uma lista de candidatos. Cada candidato aparece na lista com nome, número e partido. Você deve fazer o sistema que permite a construção e manutenção da lista de candidatos, permitindo inserir candidatos, remover candidatos, imprimir a lista. Veja que também é necessário implementar as operações para inicializar a lista e checar se está vazia.

Durante o dia os eleitores vão formar uma fila, e você vai registrar todos aqueles que votaram. Faça o sistema para manter a fila com todas as operações vistas em aula. Ao final do dia a fila tem todos os eleitores que por ali passaram. Cada eleitor informa na urna eletrônica seu voto. Ao final do dia a urna eletrônica contabiliza quantos votos cada candidato teve, e o número total de votos.

O mesário mantém os comprovantes de votação. Cada eleitor que retorna da urna recebe um comprovante; o mesário mantém também pilha com os cópias dos comprovantes dos eleitores que foram votando. Ao final do dia esta pilha é impressa, a partir do topo. O número de votantes também é conferido com o número total de votos.

Para executar o sistema, crie uma lista com seus candidatos ideais. Encha a fila de pessoas conhecidas, mostre o resultado da eleição (quantos votos cada candidato teve e quem ganhou) bem como o número total de votos.

Para as implementações dos Tipos Abstratos de Dados, se a fila for em vetor, a pilha deve ser apontadores ou vice-versa. Cada dupla pode escolher a implementação que julgar mais conveniente. O programa deve ter opções para imprimir a lista, fila ou pilha a qualquer momento.

Execute testes exaustivos, mostrando que seu programa funciona nas mais diversas situações (ex. pilha vazia, fila cheia, etc etc).

ENTREGA DO TRABALHO

Deve ser construída uma página Web, que contém em documentos HTML, os seguintes itens:

  • Relatório de como foi feito o trabalho e quais foram os resultados obtidos. Use desenhos, diagramas, figuras, todos os recursos que permitam ao professor compreender como a dupla estruturou o trabalho e quais resultados obteve.
  • Código Fonte comentado. ATENÇÃO: acrescente a todo programa a terminação ".txt" para que possa ser diretamente aberto em um browser. Exemplos: lista.pas.txt ou pilha.c.txt
  • Logs de execução dos programas, que demonstrem a execução correta destes processos. Os testes devem ser exaustivos até o ponto que demonstrem com clareza a funcionalidade correta do sistema. Veja este programa exemplo que implementa a Lista em vetor para ilustrar a criação de um bom log.

    Observações:

  • Não serão aceitos trabalhos impressos, nem em meio ótico/magnético.
  • Alguns trabalhos serão defendidos no laboratório, portanto certifique-se que seu trabalho funciona aqui.

    Importante: capriche na legibilidade e organização.


    Prof. Elias P. Duarte Jr.     Departamento de Informática     UFPR