Ir ao conteúdo

Posts recomendados

Postado

Preciso fazer um programa que calcule a qnt de votos de dois candidatos, o numero d votos brancos e nulos. estou com 2 problemas: é pra adicionar 1 aos nulos quando uma das opções for errada, por exemplo '3', mas quando eu digito 11, vai tanto um voto pro  candidato 1 (que tem o codigo 1 pra receber votos) qnt pro nulo. e é pro programa paraar quando for digitado 0, mas quando eu digito 0 contabiliza para os nulos também. tem alguma forma de fazer uma "exceção" pro 0?

 

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

int main()
{
    int op, cand1=0, cand2=0, brancos=0, nulos=0; //candidato 1 e candidato 2
    char op;

    do{
        printf("Digite\n1 para o candidato X,\n2 para o candidato Y,\nB para votar em branco\nN para votar nulo");
        printf("\nou 0 para sair: ");
        fflush(stdin);
        scanf("%c", &op);
        op=toupper(op);


        switch(op){
            case '1':
                cand1++;
                break;
            case '2':
                cand2++;
                break;
            case 'B':
                brancos++;
                break;
            case 'N':
                nulos++;
                break;
            default:
                nulos++;
                break;
        }
    system("cls");
    }while(op != '0');
    printf("%d\n\n%d\n\n%d\n\n%d", cand1, cand2, brancos, nulos);


	}

 

adicionado 3 minutos depois
2 minutos atrás, James_Mulder disse:

Preciso fazer um programa que calcule a qnt de votos de dois candidatos, o numero d votos brancos e nulos. estou com 2 problemas: é pra adicionar 1 aos nulos quando uma das opções for errada, por exemplo '3', mas quando eu digito 11, vai tanto um voto pro  candidato 1 (que tem o codigo 1 pra receber votos) qnt pro nulo. e é pro programa paraar quando for digitado 0, mas quando eu digito 0 contabiliza para os nulos também. tem alguma forma de fazer uma "exceção" pro 0?

 


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

int main()
{
    int op, cand1=0, cand2=0, brancos=0, nulos=0; //candidato 1 e candidato 2
    char op;

    do{
        printf("Digite\n1 para o candidato X,\n2 para o candidato Y,\nB para votar em branco\nN para votar nulo");
        printf("\nou 0 para sair: ");
        fflush(stdin);
        scanf("%c", &op);
        op=toupper(op);


        switch(op){
            case '1':
                cand1++;
                break;
            case '2':
                cand2++;
                break;
            case 'B':
                brancos++;
                break;
            case 'N':
                nulos++;
                break;
            default:
                nulos++;
                break;
        }
    system("cls");
    }while(op != '0');
    printf("%d\n\n%d\n\n%d\n\n%d", cand1, cand2, brancos, nulos);


	}

 

se forem testar, tirem aquele op do int. tava testando de outra forma e esqueci de tirar qn postei aqui

Postado

Para o '0' apenas coloque mais case (antes do default) para checar se é '0' colocando apenas um break assim ele não soma em nenhum contador.

 

Já no caso do 11 tem várias possibilidades, mas como só tem 2 candidatos uma solução seria ler 2 caracteres e se o segundo caractere for diferente de '\n' incrementa o nulos e usa continue para pular para o próximo ciclo do loop, assim qualquer coisa com mais de 1 caractere é considerado voto nulo.

 

        int c;
        
        ...
        
        scanf("%c%c", &op, &c);
        op=toupper(op);
        
        if (c != '\n'){
            while ((c=getchar()) != '\n' && c != EOF); //limpa a entrada padrão
            nulos++;
            continue;
        }

 

Note que seu programa tem limite de no máximo 9 candidatos, pois só serão válidas opções com 1 dígito, para fazer algo que aceita qualquer quantidade de candidatos precisaria mudar o método.

  • Curtir 1

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!