Ir ao conteúdo
  • Cadastre-se

C Programa em C para votação


Posts recomendados

Boa noite galera!

 

Sou iniciante em programação e estou com dois problemas no programa no exercício de lógica de programação abaixo:

 

1 - Caso eu vote no candidato A 02 vezes e no candidato B 01, encerrando a votação nesse momento, o programa imprime que o candidato  B ganhou a eleição mesmo estando com a quantidade de votos inferior ao candidato A.

 

2 - Tenho que colocar o percentual de votos de todos os candidatos ao final da eleição, mas até o momento não obtive exito.

 

* Não posso utilizar Switch Case, somente comandos de repetição e decisão.

 

Desde já agradeço a ajuda de todos

adicionado 0 minutos depois
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num = 0 , conf = 0 , s = 0 , n = 0 , cont = 1 , emer = 0 ,chi = 0 , ton = 0 , tn = 0 , br = 0;

    while (cont == 1)

    {

    printf("13 Emereciano 45 Chico 43 Tonho 50 Tonico \n ");


    printf("Digite o numero do seu canditato a Presidente: ");
    scanf("%d" , &num);

    if (num == 13)

    {
      printf("13 Emereciano \n ");
      printf("Deseja confirmar seu voto? 1 para Sim ou 2 para Nao: \n");
      scanf("%d", &conf );

        if (conf == 1)

        {
            printf("Voto computado com sucesso!\n\n");
            emer = emer + 1;

            printf("Deseja efetuar mais um voto? 1 para Sim ou 2 para Nao: \n ");
            scanf("%d" , &cont);

            if (cont == 1)

            {
                continue;
            }

            if (cont == 2)
            {
                cont = 2;
                printf("FIM! \n");
                printf("O candidato 13 Emereciano foi eleito com o total de %d votos",emer);

            }
        }

        if (conf == 2)

        {
            printf("Voto cancelado!\n\n");


            printf("Deseja efetuar mais um voto? 1 para Sim ou 2 para Nao: \n ");
            scanf("%d" , &cont);

            if (cont == 1)

            {
                continue;
            }

            if (cont == 2)
            {
                cont = 2;
                printf("FIM! \n");
                printf("O candidato 50 Tonico foi eleito com o total de %d votos",tn);

            }
        }

    }

    else if (num == 45)

    {
      printf("45 Chico \n ");
      printf("Deseja confirmar seu voto? 1 para Sim ou 2 para Nao: \n");
      scanf("%d", &conf );

        if (conf == 1)

        {
            printf("Voto computado com sucesso!\n\n");
            chi = chi + 1;

            printf("Deseja efetuar mais um voto? 1 para Sim ou 2 para Nao: \n ");
            scanf("%d" , &cont);

            if (cont == 1)

            {
                continue;
            }

            if (cont == 2)
            {
                cont = 2;
                printf("FIM! \n");
                printf("O candidato 45 Chico foi eleito com o total de %d votos",chi);

            }
        }

        if (conf == 2)

        {
            printf("Voto cancelado!\n\n");


            printf("Deseja efetuar mais um voto? 1 para Sim ou 2 para Nao: \n ");
            scanf("%d" , &cont);

            if (cont == 1)

            {
                continue;
            }

            if (cont == 2)
            {
                cont = 2;
                printf("FIM! \n");
                printf("O candidato 45 Chico foi eleito com o total de %d votos",chi);

            }
        }


    }

    else if (num == 43)

    {
      printf("43 Tonho \n ");
      printf("Deseja confirmar seu voto? 1 para Sim ou 2 para Nao: \n");
      scanf("%d", &conf );

        if (conf == 1)

        {
            printf("Voto computado com sucesso! \n\n");
            ton = ton + 1;

            printf("Deseja efetuar mais um voto? 1 para Sim ou 2 para Nao: \n ");
            scanf("%d" , &cont);

            if (cont == 1)

            {
                continue;
            }

            if (cont == 2)
            {
                cont = 2;
                printf("FIM! \n");
                printf("O candidato 43 Tonho foi eleito com o total de %d votos",ton);

            }
        }

        if (conf == 2)

        {
         printf("Voto cancelado!\n\n");


            printf("Deseja efetuar mais um voto? 1 para Sim ou 2 para Nao: \n ");
            scanf("%d" , &cont);

            if (cont == 1)

            {
                continue;
            }

            if (cont == 2)
            {
                cont = 2;
                printf("FIM! \n");
                printf("O candidato 43 Tonho foi eleito com o total de %d votos",ton);

            }
        }

    }

     else if (num == 50)

    {
      printf("50 Tonico \n ");
      printf("Deseja confirmar seu voto? 1 para Sim ou 2 para Nao: \n");
      scanf("%d", &conf );

        if (conf == 1)

        {
            printf("Voto computado com sucesso!\n\n");
            tn = tn + 1;

            printf("Deseja efetuar mais um voto? 1 para Sim ou 2 para Nao: \n ");
            scanf("%d" , &cont);

            if (cont == 1)

            {
                continue;
            }

            if (cont == 2)
            {
                cont = 2;
                printf("FIM! \n");
                printf("O candidato 50 Tonico foi eleito com o total de %d votos",tn);

            }
        }

        if (conf == 2)

        {
            printf("Voto cancelado!\n\n");


            printf("Deseja efetuar mais um voto? 1 para Sim ou 2 para Nao: \n ");
            scanf("%d" , &cont);

            if (cont == 1)

            {
                continue;
            }

            if (cont == 2)
            {
                cont = 2;
                printf("FIM! \n");
                printf("O candidato 50 Tonico foi eleito com o total de %d votos",tn);

            }
        }

    }

    else if ((num != 13)& (num != 45) & (num != 43)&(num != 50))
    {
        printf("Deseja confirmar seu voto? 1 para Sim ou 2 para Nao: \n");
        scanf("%d", &conf);

        if (conf == 1)

        {
            printf("Voto computado com sucesso!\n\n");
            br = br + 1;

            printf("Deseja efetuar mais um voto? 1 para Sim ou 2 para Nao: \n ");
            scanf("%d" , &cont);

            if (cont == 1)

            {
                continue;
            }

            if (cont == 2)
            {
                cont = 2;
                printf("FIM! \n");
                printf("Total de votos brancos e : ",br);

            }
        }

        if (conf == 2)
        {
            printf("Voto cancelado!\n\n");


            printf("Deseja efetuar mais um voto? 1 para Sim ou 2 para Nao: \n ");
            scanf("%d" , &cont);

            if (cont == 1)

            {
                continue;
            }

            if (cont == 2)
            {
                cont = 2;
                printf("FIM! \n");
                printf("Total de votos brancos e %d: ",br);

            }
        }


    }

    }


    return 0;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Quando não conseguir tente apagar/reorganizar o código,  isso lhe permite ter uma visão lógica maior sobre o que é preciso ser feito, também sempre comente as partes que você não entende.Apenas organizei e retirei o que não era necessário, o código é o seu, segue o código:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int c = 0, v = 0, cont = 1;
    //Como quem tiver menos votos ganha,
    //iniciei com 100 e as variaveis são diminuidas
    int v13 = 100,
        v45 = 100,
        v43 = 100,
        v50 = 100;

    //Loop de votação
    while (cont != 2){
        system("cls");

        printf("Candidatos:\n");
        printf("13 - Emereciano\n45 - Chico\n43 - Tonho\n50 - Tonico\n\n");

        printf("Digite o numero do seu canditato a Presidente: ");
        scanf("%d" , &v);

        //Aqui localiza o candidato
        if (v == 13){
          printf("\n 13 Emereciano \n ");
          printf("Deseja confirmar seu voto? 1 para Sim ou 2 para Nao: \n");
          scanf("%d", &c);

          if (c == 1){
            v13--;
            printf(" Voto computado com sucesso!\n\n");
          }else if (c == 2) {
                printf(" Voto cancelado!\n\n");
            }
        }

        else if (v == 45){
          printf("\n 45 Chico \n ");
          printf("Deseja confirmar seu voto? 1 para Sim ou 2 para Nao: \n ");
          scanf("%d", &c);

          if (c == 1){
            v45--;
            printf(" Voto computado com sucesso!\n\n");
          }else if (c == 2) {
                printf(" Voto cancelado!\n\n");
            }
        }

        else if (v == 43){
          printf("\n 43 Tonho \n ");
          printf("Deseja confirmar seu voto? 1 para Sim ou 2 para Nao: \n ");
          scanf("%d", &c);

          if (c == 1){
            v43--;
            printf(" Voto computado com sucesso!\n\n");
          }else if (c == 2) {
                printf(" Voto cancelado!\n\n");
            }
        }

        else if (v == 50){
          printf("\n 50 Tonico \n ");
          printf("Deseja confirmar seu voto? 1 para Sim ou 2 para Nao: \n ");
          scanf("%d", &c);

          if (c == 1){
            v50--;
            printf(" Voto computado com sucesso!\n\n");
          }else if (c == 2) {
                printf(" Voto cancelado!\n\n");
            }
        }


        //Registra se quer ou nao continuar
        printf("Deseja efetuar mais um voto? 1 para Sim ou 2 para Nao: \n ");
        scanf("%d" , &cont);
    }

    //Aqui mostra o resultado
    if((v13 < v45) &&
       (v13 < v43) &&
       (v13 < v50)){
        printf("\nEmereciano Venceu!\n");
       } else
    if((v45 < v13) &&
        (v45 < v43) &&
        (v45 < v50)){
        printf("\nChico Venceu!\n");
       } else
    if((v43 < v13) &&
        (v43 < v45) &&
        (v43 < v50)){
        printf("\nTonho Venceu!\n");
       } else
    if((v50 < v13) &&
        (v50 < v43) &&
        (v50 < v45)){
        printf("\nTonico Venceu!\n");
       }
       else printf("Empate!\n");
    return 0;
}

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@Anderson Benício    para saber a porcentagem, você precisa ter a quantidade de votos então precisa de uma variável para isso .   e a porcentagem é feita usando a regra de três assim :

qtd_votos -------  100 %
voto_candidato --  X 
-----------------------------------
x = voto_candidato * 100
   ----------------------
        qtd_votos

então no código seria assim :

xx=voto_candidato*100/VotVal;

O Tysquare89 organizou muito  bem o código ,  com isso ele ficou bem reduzido e com melhor entendimento,   então coloquei essa função para calcular a porcentagem :

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
void emereciano();
void chico();
void tonho();
void tonico();
int confirma();
int num,conf,cont=1,Ncan,Tvotos,x,TGvotos;
char can[30];
float xx,emer,chi,ton,tn,br,VotVal;
int main(){
    while (cont == 1){
        printf("      Candidatos\n\n");
        printf("13 -> Emereciano \n45 -> Chico \n43 -> Tonho \n50 -> Tonico \n");
        printf("Digite o numero do seu canditato a Presidente: ");
        scanf("%d",&num);
        if(num == 13)emereciano();
        else
            if(num == 45)chico();
        else
            if(num == 43)tonho();
        else
            if(num == 50)tonico();
        else{
            printf("voto em branco . . .\n");
            x = confirma();
            br += x;
            VotVal--;
        }
        printf("Deseja efetuar mais um voto? 1 para Sim ou 2 para Nao: \n ");
        scanf("%d",&cont);
    }
    Tvotos=0;
    if(emer>Tvotos){Tvotos=emer;strcpy(can,"Emereciano"  );Ncan=13 ;}
    if(chi >Tvotos){Tvotos=chi ;strcpy(can,"Chico"       );Ncan=45 ;}
    if(ton >Tvotos){Tvotos=ton ;strcpy(can,"Tonho"       );Ncan=43 ;}
    if(tn  >Tvotos){Tvotos=tn  ;strcpy(can,"Tonico"      );Ncan=50 ;}
    if(br  >Tvotos){Tvotos=br  ;strcpy(can,"Votos Branco");Ncan=00;}
    printf("\n\n    ---------  FIM! ---------\n");
    if(Tvotos > 0)
        printf("O candidato %d %s foi eleito com o total de %d votos\n\n",Ncan,can,Tvotos);
    else
        printf("Nenhum Candidato Teve Voto . . . !\n\n");
    printf("Total Geral De Votos --> %d\n",TGvotos);
    printf("Total Votos Em Branco -> %.f\n\n",br);
    xx=emer*100/VotVal;
    printf("O Candidato Emereciano Teve %.f Votos, Porcentagem %.2f Por Cento Dos Validos\n",emer,xx);
    xx=chi*100/VotVal;
    printf("O Candidato    Chico   Teve %.f Votos, Porcentagem %.2f Por Cento Dos Validos\n",chi,xx);
    xx=ton*100/VotVal;
    printf("O Candidato    Tonho   Teve %.f Votos, Porcentagem %.2f Por Cento Dos Validos\n",ton,xx);
    xx=tn*100/VotVal;
    printf("O Candidato    Tonico  Teve %.f Votos, Porcentagem %.2f Por Cento Dos Validos\n\n",tn,xx);
    return 0;
}
void emereciano(){
    printf("13 Emereciano \n");
    x = confirma();
    emer += x;
}
void chico(){
    printf("45 Chico \n");
    x = confirma();
    chi += x;
}
void tonho(){
    printf("43 Tonho \n");
    x = confirma();
    ton += x;
}
void tonico(){
    int x;
    printf("50 Tonico \n");
    x = confirma();
    tn += x;
}
int confirma(){
    int y=0;
    printf("Deseja confirmar seu voto? 1 para Sim ou 2 para Nao: \n");
    scanf("%d", &conf );
    if (conf == 1){
        printf("Voto computado com sucesso!\n\n");
        y=1;
        VotVal++;
        TGvotos++;
    }
    if (conf == 2){
        printf("Voto cancelado!\n\n");
    }
    return y;
}

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Boa noite!

 

Sobre a questão da regra de três ok!

 

O problema é que não posso utilizar funções para calcular a porcentagem(é regra). Tem que ser na lógica mesmo, mas foi grandiosa a ajuda. Vou tentar fazer aqui.

 

Desde já agradeço.

adicionado 8 minutos depois

@TYSQUARE89 Boa noite!

 

Gostei da sua simplificação. Não sabia que poderia colocar a parte da continuação no final do while.

 

Você rodou o programa e viu o problema que mencionei(Questão 01)? Pode me informar porque ocorre isso? 

 

Entretanto ficou faltando o percentual de votos dos candidatos. E conforme mencionei ao colega Devair, não posso utilizar nenhuma função.

 

Desde já agradeço

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Anderson Benício       agora que vi o que você disse sobre poder usar somente comando de repetição e decisão,   Mas se você não pode usar  soma, subtração, multiplicação e divisão então será bem difícil conseguir saber essa porcentagem, na verdade creio que não terá jeito .

Link para o comentário
Compartilhar em outros sites

Devair as operações básicas pode sim, o que não pode é funções ou utilizar como exemplo a biblioteca math.

 

Tive um exercício que era para elevar expoente e não podia usar a função POW que está nessa biblioteca(Um cara utilizou e a instrutora pediu para ele refazer...huahauha).

 

No caso da forma que você informou como fazer a regra de três, acredito que seja lógica mesmo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Anderson Benício Queria entender essa questão 1, era um problema no seu código, ou faz parte do exercício? Tipo, o que tiver menos votos ganha. Segue o código com percentual:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int c = 0, v = 0, cont = 1, votos = 0;
    //Como quem tiver menos votos ganha,
    //iniciei com 100 e as variaveis são diminuidas
    int v13 = 100,
        v45 = 100,
        v43 = 100,
        v50 = 100;

    //Loop de votação
    while (cont != 2){
        system("cls");

        printf("Candidatos:\n");
        printf("13 - Emereciano\n45 - Chico\n43 - Tonho\n50 - Tonico\n\n");

        printf("Digite o numero do seu canditato a Presidente: ");
        scanf("%d" , &v);

        //Aqui localiza o candidato
        if (v == 13){
          printf("\n13 Emereciano \n");
          printf("Deseja confirmar seu voto? 1 para Sim ou 2 para Nao: \n");
          scanf("%d", &c);

          if (c == 1){
            votos++;
            v13--;
            printf("Voto computado com sucesso!\n\n");
          }else if (c == 2) {
                printf("Voto cancelado!\n\n");
            }
        }

        else if (v == 45){
          printf("\n45 Chico \n ");
          printf("Deseja confirmar seu voto? 1 para Sim ou 2 para Nao: \n ");
          scanf("%d", &c);

          if (c == 1){
            votos++;
            v45--;
            printf("Voto computado com sucesso!\n\n");
          }else if (c == 2) {
                printf("Voto cancelado!\n\n");
            }
        }

        else if (v == 43){
          printf("\n43 Tonho \n ");
          printf("Deseja confirmar seu voto? 1 para Sim ou 2 para Nao: \n ");
          scanf("%d", &c);

          if (c == 1){
            votos++;
            v43--;
            printf("Voto computado com sucesso!\n\n");
          }else if (c == 2) {
                printf("Voto cancelado!\n\n");
            }
        }

        else if (v == 50){
          printf("\n50 Tonico \n ");
          printf("Deseja confirmar seu voto? 1 para Sim ou 2 para Nao: \n ");
          scanf("%d", &c);

          if (c == 1){
            votos++;
            v50--;
            printf("Voto computado com sucesso!\n\n");
          }else if (c == 2) {
                printf("Voto cancelado!\n\n");
            }
        }
        else printf("Candidato invalido!\n");


        //Registra se quer ou nao continuar
        printf("Deseja efetuar mais um voto? 1 para Sim ou 2 para Nao: \n ");
        scanf("%d" , &cont);
    }

    printf("\nResultados:");
    //Aqui mostra o resultado
    if((v13 < v45) &&
       (v13 < v43) &&
       (v13 < v50)){
        printf("\nEmereciano Venceu!\n");
       } else
    if((v45 < v13) &&
        (v45 < v43) &&
        (v45 < v50)){
        printf("\nChico Venceu!\n");
       } else
    if((v43 < v13) &&
        (v43 < v45) &&
        (v43 < v50)){
        printf("\nTonho Venceu!\n");
       } else
    if((v50 < v13) &&
        (v50 < v43) &&
        (v50 < v45)){
        printf("\nTonico Venceu!\n");
       }
       else printf("Empate!\n");


    printf("\n\nPercentual:\n");
    int x;
    x = (((v13-100)*(-1))*100)/votos;
    printf("Emereciano: %d\n", x);
    x = (((v45-100)*(-1))*100)/votos;
    printf("Chico: %d\n", x);
    x = (((v43-100)*(-1))*100)/votos;
    printf("Tonho: %d\n", x);
    x = (((v50-100)*(-1))*100)/votos;
    printf("Tonico: %d\n", x);
    return 0;
}

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@Anderson Benício      o erro no seu código é exatamente por que na hora de apresentar o candidato vencedor precisa verificar antes quantos votos teve todos os candidatos e ver qual o que teve maior número de votos, então aqui nessa parte do se código ficaria assim :

printf("Deseja efetuar mais um voto? 1 para Sim ou 2 para Nao: \n ");
scanf("%d" , &cont);
if (cont == 1)
{
    continue;
}
if (cont == 2)
{
    cont = 2;
    printf("FIM! \n");
    if(tn > eme && tn > chi && tn > ton)
        printf("O candidato 50 Tonico foi eleito com o total de %d votos",tn);
  if(ton > eme && ton > chi && ton > tn)
        printf("O candidato 43 Tonho foi eleito com o total de %d votos",ton);
  if(chi > eme && chi > tn && chi > ton)
        printf("O candidato 45 Chico foi eleito com o total de %d votos",chi);
  if(emer > tn && emer > chi && emer > ton)
        printf("O candidato 13 Emereciano foi eleito com o total de %d votos",emer);
}

e precisa colocar em todos os locais aí no seu código onde for imprimir o resultado .

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@devair1010 @TYSQUARE89

 

Bom dia!

 

Agradeço pela ajuda e informações. Já consegui terminar o programa e entrega-lo. Entretanto a nível de conhecimento gostaria de saber como essa fórmula de percentual funciona?

printf("\n\nPercentual:\n");
int x;
x = (((v13-100)*(-1))*100)/votos;
printf("Emereciano: %d\n", x);
x = (((v45-100)*(-1))*100)/votos;
printf("Chico: %d\n", x);
x = (((v43-100)*(-1))*100)/votos;
printf("Tonho: %d\n", x);
x = (((v50-100)*(-1))*100)/votos;
printf("Tonico: %d\n", x);

 

Fiz uma forma simplificada e ocorreu tudo bem. Segue:

 

v13 = emer * 100 / votos;
v43 = ton * 100 / votos;
v45 = chi * 100 / votos;
v50 = tn * 100 / votos;

 vbr = br * 100 / votos;

 

Depois dessa encerramos o tópico. ^^

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@Simon Viegas Boa tarde!

 

O código é o mesmo do inicio do tópico, com a ajuda dos membros as duvidas foram sanadas e completei o exercício.

 

Como o código do @TYSQUARE89 foi distinto, pedi uma explicação da lógica dele na parte da regra de três.

 

 

adicionado 1 minuto depois

@TYSQUARE89 Boa tarde!

 

Grato pela explicação.

 

Agradeço também pela paciência ao responder meus questionamentos.

 

Até a próxima.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!