Enviado em 22/09/2010 - 16:51h
Olá pessoal!
#include <stdio.h>
#include <stdlib.h>
//Tem um bug extremamente estranho no programa
//Ele simplesmente não conta o número de votos nulos
//Tem um printf como comentário para testar que o
//código executa o trecho de código onde tem um comando
//de incremento do contador de votos nulos
int main()
{
int i;
int k;
int n_A = 0;//contador de votos para A
int n_B = 0;//contador de votos para B
int n_C = 0;//contador de votos para C
int n_b = 0;//contador de votos brancos
int n_n = 0;//contador de votos nulos
char ch;//armazenará o caractere digitado pelo usuário
int n_votantes;//número de votantes
int n_validos;//número de votos válidos
char vencedor = '0';//indica qual candidato venceu as eleições
//considerando que não há vencedor se há
//empate entre os mais votados
printf("Informe os votos da seguinte forma:\n");
printf("Digite 'A' se o voto é para o candidato A;\n");
printf("Digite 'B' se o voto é para o candidato B;\n");
printf("Digite 'C' se o voto é para o candidato C;\n");
printf("Digite 'b' se o voto é branco;\n");
printf("Digite 'n' se o voto é nulo;\n");
printf("Informe o numero de seccoes: ");
scanf("%d", &k);
for( i = 1 ; i <= k ; i++ ){
printf("dados da seccao %d\n", i);
do{
scanf("%s", &ch);
if( ch == 'A' ){
n_A++;
}
else if( ch == 'B' ){
n_B++;
}
else if( ch == 'C' ){
n_C++;
}
else if( ch == 'b' ){
n_b++;
}
else if( ch == 'n' ){
n_n++;
//printf("Entrou aqui!\n");
}
else if( ch != '0' ){
printf("Dado invalido! Informe os dados");
printf(" da forma especificada acima.\n");
}
} while( ch != '0' );
}
//cálculo do número de votantes e de votos válidos
n_votantes = n_A + n_B + n_C + n_b + n_n;
n_validos = n_A + n_B +n_C;
printf("Numero de votantes: %d\n", n_votantes);
printf("Numero de votos do candidato A: %d\n", n_A);
printf("Numero de votos do candidato B: %d\n", n_B);
printf("Numero de votos do candidato C: %d\n", n_C);
printf("Numero de votos brancos: %d\n", n_b);
printf("Numero de votos nulos: %d\n", n_n);
printf("Numero de votos validos: %d\n", n_validos);
//esses ifs fazem todas as combinações possíveis das
//comparações e imprime o resultado das comparações
if( n_A > n_B ){
if( n_A > n_C ){
printf("O Candidato A foi o mais votado.\n");
vencedor = 'A';
}
else if( n_A == n_C )
printf("Os Candidatos A e C foram os mais votados.\n");
else{
printf("O Candidato C foi o mais votado.\n");
vencedor = 'C';
}
}
else if( n_A == n_B ){
if( n_A > n_C )
printf("Os candidatos A e B foram os mais votados.\n");
else if( n_A == n_C)
printf("Os candidatos A, B e C receberam a mesma votacao.\n");
else{
printf("O candidato C foi o mais votado.\n");
vencedor = 'C';
}
}
else{
if( n_B > n_C ){
printf("O candidato B foi o mais votado.\n");
vencedor = 'B';
}
else if ( n_B == n_C )
printf("Os candidatos B e C foram os mais votados.\n");
else{
printf("O candidato C foi o mais votado.\n");
vencedor = 'C';
}
}
//decidindo se a eleição foi válida
if( (n_b + n_n) < n_validos )
printf("As eleicoes foram validas.\n");
else
printf("As eleicoes nao foram validas.\n");
//decidindo se haverá segundo turno
if((vencedor = 'A') && ( n_A > 0.5*n_validos )){
printf("Nao havera segundo turno.\n");
printf("O candidato A venceu as eleicoes!\n");
}
else if((vencedor = 'B') && ( n_B > 0.5*n_validos )){
printf("Nao havera segundo turno.\n");
printf("O candidato B venceu as eleicoes!\n");
}
else if((vencedor = 'C') && ( n_C > 0.5*n_validos )){
printf("Nao havera segundo turno.\n");
printf("O candidato C venceu as eleicoes!\n");
}
else
printf("Havera segundo turno.\n");
return 0;
}