Ir ao conteúdo

Posts recomendados

Postado

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
Postado

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
Postado

@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
Postado

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
Postado

@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 .

Postado

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
Postado

@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
Postado

@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
Postado

@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
Postado

@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

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!