Vou colocar uma parte do programa, a parte que estou em duvida mas tem mais código pra cima e pra baixo do que vou mostrar.
O que acontece é que eu não consigo fazer esse do-while funcionar, já tentei usar tanto o %c quanto o %s no scanf. já tentei usar aspas simples tanto na declaração do char, quanto la dentro da condição do while, tentei varias combinações envolvendo, %c %s ' ' e " ". Eu sei que o certo é usar a aspas simples e o %c porem tentei isso tudo porque não tava dando certo. Quando chega la no scanf do while, ele le a variavel cont mas depois finaliza o programa, nem chega a executar os comandos abaixo dele.
obs: já tentei com a biblioteca string.h inserida e não deu, tirei ela a toa mesmo.
Código completo:
#include<stdio.h>#include<stdlib.h>struct tiposDeVoto{int nulos;int brancos;int c[4];}tDV={0,0,{0,0,0,0}};struct porcVotos{float nulos;float brancos;float c[4];}pV={0.0,0.0,{0.0,0.0,0.0,0.0}};int main(){/*Em uma eleição para governador concorrem 4 candidatos (1, 2, 3 e 4). No dia da eleição cada
um dos N eleitores votaram:
• 1, 2, 3 ou 4 para cada candidato.
• 0 (zero) para voto em branco.
• -1 para voto nulo.
Considere que:
• O candidato ganha a eleição se fizer 51% ou mais do total de votos.
• Se não houver ganhador, os dois melhores irão para o segundo turno.
Faça um programa em C que calcule e imprima:
• O candidato vencedor (se houver), seguido da porcentagem de votos obtida. Se não houver vencedor,
imprima os candidatos que irão ao segundo turno com a respectiva porcentagem de votos obtida.
• A porcentagem obtida pelos demais candidatos.
• A porcentagem de votos em branco e nulos.*/
tentenovamente:
printf("----------------------------\n");
printf(" Urna eleitoral ");
printf("\n 1- Tiago\n 2- Pedro\n 3- Alvaro\n 4- Chaves\n 0- Voto em branco\n -1- Voto nulo\n");
printf("------------------------------\n");int voto=0,i=0;char cont="a";do{
printf("Digite o voto: ");
scanf("%i",&voto);switch(voto){case1:
tDV.c[0]+=1;break;case2:
tDV.c[1]+=1;break;case3:
tDV.c[2]+=1;break;case4:
tDV.c[3]+=1;break;case-1:
tDV.nulos+=1;break;case0:
tDV.brancos+=1;break;default:
printf("Escolha invalida!\nTente novamente!\n");goto tentenovamente;}
i++;
printf("Quer continuar? [S/N]");
scanf("%s",&cont);}while(cont=="S");int totalDeVotos=i+1;
pV.brancos=tDV.brancos/totalDeVotos;
pV.nulos=tDV.nulos/totalDeVotos;for(int k=0;k<4;k++)
pV.c[k]=(float)tDV.c[k]/totalDeVotos;int vencedor=0;
printf("pv.c[0]: %.2f\n",pV.c[0]);if(pV.c[0]>0.51&& pV.c[0]>pV.c[1]&& pV.c[0]>pV.c[2]&& pV.c[0]>pV.c[3]){
vencedor=1;
printf("Tiago e o vencedor da eleicao com %0.2f %% dos votos",(pV.c[0]*100));}if(pV.c[1]>0.51&& pV.c[1]>pV.c[0]&& pV.c[1]>pV.c[2]&& pV.c[1]>pV.c[3]){
vencedor=1;
printf("Pedro e o vencedor da eleicao com %0.2f %% dos votos",(pV.c[1]*100));}if(pV.c[2]>0.51&& pV.c[2]>pV.c[0]&& pV.c[2]>pV.c[1]&& pV.c[2]>pV.c[3]){
vencedor=1;
printf("Alvaro e o vencedor da eleicao com %0.2f %% dos votos",(pV.c[2]*100));}if(pV.c[3]>0.51&& pV.c[3]>pV.c[0]&& pV.c[3]>pV.c[2]&& pV.c[3]>pV.c[1]){
vencedor=1;
printf("Chaves e o vencedor da eleicao com %0.2f %% dos votos",(pV.c[3]*100));}/*if (vencedor==0){
printf("vencedor=0");
}*/return0;}
Pergunta
JaoOLeigo
Vou colocar uma parte do programa, a parte que estou em duvida mas tem mais código pra cima e pra baixo do que vou mostrar.
O que acontece é que eu não consigo fazer esse do-while funcionar, já tentei usar tanto o %c quanto o %s no scanf. já tentei usar aspas simples tanto na declaração do char, quanto la dentro da condição do while, tentei varias combinações envolvendo, %c %s ' ' e " ". Eu sei que o certo é usar a aspas simples e o %c porem tentei isso tudo porque não tava dando certo. Quando chega la no scanf do while, ele le a variavel cont mas depois finaliza o programa, nem chega a executar os comandos abaixo dele.
obs: já tentei com a biblioteca string.h inserida e não deu, tirei ela a toa mesmo.
Código completo:
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.