by ambarreira
25. outubro 2009 00:00
Eleições e Sistemas de Votação
Num ano em que tanto se tem ouvido falar de eleições, o trabalho de programação que vos é proposto em IP endereça um problema relacionado com eleições e sistemas de votação.
A realização de uma eleição pressupõe a escolha de um sistema de votação, ou seja, de um sistema que rege a forma como uma população de votantes pode escolher entre um conjunto de opções e define como é calculado o resultado da votação. Os sistemas de votação são úteis noutras situações, por exemplo, quando se pretende atribuir os vários prémios de um concurso ou se pretende ordenar os candidatos a um lugar.
A primeira parte do trabalho, para além de vos obrigar a pôr em prática os conhecimentos entretanto adquiridos, vai servir para se familiarizarem com este tema.
Em que consiste o trabalho, afinal? A vossa tarefa é desenvolver um programa Java que implemente parte de um método cumulativo de votação por nota num cenário em que a escolha se faz entre 3 opções.
O sistema de votação é definido da seguinte forma:
• cada votante atribui uma pontuação numérica entre 0 e 100 a cada opção;
• a soma das pontuações atribuídas por cada votante não pode exceder 100;
• a ordenação das opções é determinada pela pontuação acumulada (fica à frente quem acumula mais pontos)
• o desempate é feito utilizando a média das pontuações quando se considera apenas as pontuações positivas (i.e., não entram para esta médias as pontuações nulas)
O programa deve começar por obter o número de votantes e recolher os seus votos, considerando que os votos de cada votante são 3 inteiros (possivelmente na mesma linha apenas separados por espaços).
Depois, para cada opção, deve apresentar a pontuação recolhida e a média das pontuações.
Eis uma possível interacção com o vosso programa (a itálico apresenta-se o texto introduzido pelo utilizador):
Número de eleitores, sff: 3
Voto eleitor 1 [A B C]: 25 0 0
Voto eleitor 2 [A B C]: 5 10 5
Voto eleitor 3 [A B C]: 25 0 5
Resultados:
Opção A: 55 18.3
Opção B: 10 10.0
Opção C: 10 5.0
Exemplo de outra interacção, desta vez envolvendo a repetição da leitura de um voto:
Número de eleitores, sff: 5
Voto eleitor 1 [A B C]: 1 0 0
Voto eleitor 2 [A B C]: 5 100 5
Voto inválido! Insira de novo.
Voto eleitor 2 [A B C]: 5 10 5
Voto eleitor 3 [A B C]: 1 0 5
Voto eleitor 4 [A B C]: 1 0 5
Voto eleitor 5 [A B C]: 1 0 5
Resultados:
Opção A: 9 1.8
Opção B: 10 10.0
Opção C: 20 5.0
Segue 4 resoluções numa unica aplicação para este problema, é só fazer download e correr (atenção aos plágios, recurso para ajuda e não para uso):
t1.java (6,74 kb)
Divirtam-se, boa programação,
Alex