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.
char cont="a";
do{
printf("Digite o voto: ");
scanf("%i",&voto);
switch (voto){
case 1:
tDV.c[0]+=1;
break;
case 2:
tDV.c[1]+=1;
break;
case 3:
tDV.c[2]+=1;
break;
case 4:
tDV.c[3]+=1;
break;
case -1:
tDV.nulos+=1;
break;
case 0:
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");
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){
case 1:
tDV.c[0]+=1;
break;
case 2:
tDV.c[1]+=1;
break;
case 3:
tDV.c[2]+=1;
break;
case 4:
tDV.c[3]+=1;
break;
case -1:
tDV.nulos+=1;
break;
case 0:
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");
}*/
return 0;
}