Exercício em C [RESOLVIDO]

1. Exercício em C [RESOLVIDO]

Phil
Phil96

(usa Outra)

Enviado em 15/06/2021 - 20:10h

pessoal, estou com esse exercício em C, porém não estou conseguindo imprimir o total de votos e a porcentagem, alguém consegue ajudar?

ENUNCIADO: .Em um ano de eleições municipais, dois candidatos disputam a prefeitura de Bicas: Número: 1 - Candidato João e Número 2 - Candidato Marta. Elabore um programa que permita ao eleitor votar nos candidatos, uma espécie de urna eletrônica. O eleitor poderá votar também em branco e, até mesmo, anular seu voto digitando um número que não seja de um dos candidatos. Ao final do dia, o presidente da seção deverá digitar o código 017000569999 para encerrar a votação. O programa deve então, emitir o boletim de urna contendo: i) Total de Votos; ii) Total de Votos Brancos; iii) Total de Votos Nulos; iv) Total de Votos do Candidato Número 1; Percentagem de Votos do Candidato 1; Total de Votos do Candidato 2; Percentagem de Votos do Candidato


o que consegui fazer até agora:
#include <stdio.h>
#include <stdlib.h>

int main(void){

int listaCodigos [4], i;
char candidatos[][20] = {"Joao", "Marta", "Voto Nulo", "Voto em Branco"};
int saida = 2;
int voto;
int total_voto = 0;



printf("Digite 1 para votar em Joao, 2 para votar em Marta\n3 para voto nulo e 4 para votar em branco\n\n");


for(i = 0; i < 4; i++){
listaCodigos[i] = 0;
}

while(saida >= 0 && saida < 100){
printf("Digite seu voto. Para encerrar, digite o codigo da urna: ");
scanf("%d", &voto);

if(voto >= 1 && voto <= 100)
listaCodigos[voto - 1]++;
saida = voto;
total_voto = total_voto + listaCodigos[i];

}

for(i = 0; i < 4; i++){
printf("\nCandidato %s recebeu %d votos \n", candidatos[i], listaCodigos[i]);

if(saida == 17000569999){
break;
}
}

printf("\ntotal: %d\n\n", total_voto);

return 0;

}



  


2. Re: Exercício em C

berghetti
berghetti

(usa Debian)

Enviado em 16/06/2021 - 18:29h

porém não estou conseguindo imprimir o total de votos e a porcentagem, alguém consegue ajudar?


coloquei um comentário nas partes em que alterei.
#include <stdio.h>
#include <stdlib.h>

int main(void){

int listaCodigos [4], i;
char candidatos[][20] = {"Joao", "Marta", "Voto Nulo", "Voto em Branco"};
long int saida = 2; // alterado para variavel de 64 bits devido tamanho da chave de saida
long int voto; // idem
int total_voto = 0;



printf("Digite 1 para votar em Joao, 2 para votar em Marta\n3 para voto nulo e 4 para votar em branco\n\n");


// poderia ter inicializado o array assim
// int listaCodigos [4] = { 0 }; é mais rapido
for(i = 0; i < 4; i++){
listaCodigos[i] = 0;
}

// alterado para checar apenas pela senha de saida
while( saida != 17000569999 ){
printf("Digite seu voto. Para encerrar, digite o codigo da urna: ");
scanf("%ld", &voto); // alterado o especificador de formato
// aqui é necessario uma verificação no retorno de scanf
// experimente digitar uma letra para ver oque acontece...

// inserido { chaves } no if, do jeito que estava apenas a primeira
// linha dependia da condição para ser executada
// e a lógica estava errada, compare as diferenças...
if(voto >= 1 && voto <= 4)
{
listaCodigos[voto - 1]++;
total_voto++; // voto estava sendo incrementado de forma errada
}

saida = voto;
}


// alterado para exibir porcentagem tambem
for(i = 0; i < 4; i++){
printf("\nCandidato %s recebeu %d votos %.1f%%\n",
candidatos[i],
listaCodigos[i],
( (float) listaCodigos[i] / total_voto ) * 100 );
}

printf("\ntotal: %d\n\n", total_voto);

return 0;
}





3. Re: Exercício em C [RESOLVIDO]

Phil
Phil96

(usa Outra)

Enviado em 16/06/2021 - 22:48h

muito obrigado!

consegui compreender as alterações que foram feitas, esclareceu demais