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á:

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%)