Trabalho Prático 1 - Eleições 2008
Descrição Geral do Problema
Este trabalho, que deverá ser feito individualmente ou em duplas, consiste em modelar e implementar um sistema para contabilização de votos em uma eleição fictícia.
Há um conjunto de arquivos contendo as informações sobre candidatos, partidos e os votos em si. Esses arquivos são descritos abaixo. O objetivo do programa é apresentar um relatório contendo a apuração da votação.
Clique aqui para fazer o download dos arquivos de dados (candidatos e urnas)Clique aqui para ver a saída do programa na tela
Arquivo de Candidatos e Partidos
O arquivo de candidatos e partidos (candidatos.txt) é organizado da seguinte forma:
Número_do_Candidato1 Nome_do_Candidato1 Nome_do_Partido Número_do_Candidato2 Nome_do_Candidato2 Nome_do_Partido ...
Obviamente, pode haver mais de um candidato do mesmo partido.
Arquivo de Votos (Urna)
Esta eleição simplificada é composta por 4 urnas, cujo conteúdo é também dividido em 4 arquivos: urna1.txt, urna2.txt, ... urna4.txt). Cada arquivo contém os votos da urna correspondente, onde cada linha armazena o número do candidato escolhido pelo eleitor.
Número_do_Candidato Número_do_Candidato Número_do_Candidato ...
Funcionamento do Programa
O programa a ser implementado deverá:
- Ler os dados dos candidatos do arquivo candidatos.txt, armazenando as informações na memória;
- Ler os dados da votação de cada urna (arquivos urna[1-4].txt), acumulando os votos de cada candidato;
- Exibir na tela o relatório da votação:
- Candidato mais votado;
- Candidato menos votado;
- Partido mais votado;
- Partido menos votado;
- Percentual de votos do candidato mais votado em relação ao total;
- Percentual de votos do partido mais votado em relação ao total;
Avaliação
Devem ser criadas classes para representar os dados. Ex: classe Candidato, Partido, etc. A criação de classes adicionais fica dependente da sua implementação - um dos objetivos deste trabalho é a modelagem adequada dos atributos e métodos dessas classes.
O código-fonte deve estar adequadamente comentado (nas suas partes/algoritmos principais, pelo menos) e no seu início deve haver um comentário com o nome do(s) aluno(s).
Apresentação
O trabalho será apresentado no laboratório. Durante a apresentação, todos os alunos devem estar presentes e aptos a responder quaisquer perguntas. Respostas insatisfatórias ou a ausência do aluno acarretarão em anulação da nota final.
No momento da apresentação, cada aluno ou dupla já deverá ter submetido um arquivo .cpp pelo sistema MOODLE, contendo o programa-fonte (.cpp). O programa deverá ser nomeado da seguinte forma: nome_sobrenome.cpp. No caso de uma dupla, usar a forma: sobrenome1_sobrenome2.cpp.
Não serão aceitos trabalhos que não compilem corretamente no g++, sob hipótese nenhuma.
Todos os trabalhos deverão ser entregues até o dia da apresentação, e apresentados na data marcada - não serão aceitos trabalhos fora do prazo.
Trabalhos copiados resultarão em nota zero para todos os alunos envolvidos.
Saída na Tela
Veja abaixo o resultado esperado do programa (usando os dados fornecidos):
****** RESULTADOS ****** TOTAL DE VOTOS: 3868 CANDIDATO MAIS VOTADO: Zezinho com 229 votos (5.9%) Candidato menos votado: Estelionatino com 139 votos (3.6%) Partidos: PDR 749 PFB 812 PI 728 PDM 788 PDP 791 PARTIDO MAIS VOTADO: PFB com 812 votos (21%) Partido menos votado: PI com 728 votos (19%)