Ir ao conteúdo
  • Cadastre-se

C Total da variável não exibe (do while)


kamiLuke12
Ir à solução Resolvido por isrnick,

Posts recomendados

Olá pessoal,

 

Preciso de uma ajuda nesse programa abaixo... estou tentando exibir o total dos valores, mas não estou conseguindo:

alguma dica ou sugestão?

//Escolhendo pessoas
//Escolher homens, mais de 18 anos, cabelo castanho
//Mulheres, entre 25 e 30, Loiras

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

void limpa_linha() {
    scanf("%*[^\n]");
    scanf("%*c");
}

int main() {
    
    int idade, cabeloCastanho, cabeloLoiro;
    char sexo, resp, corC;
    
    do {
        printf("============================\n");
        printf("    Seletor de Pessoas        \n");
        printf("============================\n");
        printf("Qual o sexo? [M/F]: ");
        scanf("%c", &sexo);
        limpa_linha();
        printf("Qual idade? ");
        scanf("%d", &idade);
        limpa_linha();
        printf("Qual a cor do cabelo? \n");    
        printf("[1] Preto\n");
        printf("[2] Castanho\n");
        printf("[3] Loiro\n");
        printf("[4] Ruivo\n\n");
        scanf("%c", &corC);
        limpa_linha();
        
        if(sexo == 'M' && idade > 18 && corC == 2){
            cabeloCastanho = cabeloCastanho +1;
        }
        else{
            if(sexo == 'F' && idade >= 25 && idade <= 30 && corC == 3){
                cabeloLoiro = cabeloLoiro + 1;
            }
        }
    
        printf("Quer continuar? [S/N]: ");
        scanf("%c", &resp); // aqui e um caractere, logo o uso do "%c"
        limpa_linha();
        
    } while (resp == 's' || resp == 'S');
    printf("Total de homens com mais de 18 anos e cabelo castanho: %d\n", cabeloCastanho);
    printf("Total de mulhere entre 25 e 30 anos com cabelo loiro: %d", cabeloLoiro);
    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

Agora foi ;)!

 

//Escolhendo pessoas
//Escolher homens, mais de 18 anos, cabelo castanho
//Mulheres, entre 25 e 30, Loiras

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

void limpa_linha() {
    scanf("%*[^\n]");
    scanf("%*c");
}

int main() {
    
    int idade, cabeloCastanho=0, cabeloLoiro=0, corC;
    char sexo, resp;
    
    do {
        printf("============================\n");
        printf("    Seletor de Pessoas        \n");
        printf("============================\n");
        printf("Qual o sexo? [M/F]: ");
        scanf("%c", &sexo);
        limpa_linha();
        printf("Qual idade? ");
        scanf("%d", &idade);
        limpa_linha();
        printf("Qual a cor do cabelo? \n");    
        printf("[1] Preto\n");
        printf("[2] Castanho\n");
        printf("[3] Loiro\n");
        printf("[4] Ruivo\n\n");
        scanf("%d", &corC);
        limpa_linha();
        
        if(sexo == 'M' && idade > 18 && corC == 2){
            cabeloCastanho = cabeloCastanho +1;
        }
        else{
            if(sexo == 'F' && idade >= 25 && idade <= 30 && corC == 3){
                cabeloLoiro = cabeloLoiro + 1;
            }
        }
    
        printf("Quer continuar? [S/N]: ");
        scanf("%c", &resp); // aqui e um caractere, logo o uso do "%c"
        limpa_linha();
        
    } while (resp == 's' || resp == 'S');
    printf("Total de homens com mais de 18 anos e cabelo castanho: %d\n", cabeloCastanho);
    printf("Total de mulhere entre 25 e 30 anos com cabelo loiro: %d", cabeloLoiro);
    return 0;
}
 

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

@kamiLuke12 Ao invés de criar a função "limpa_tela", você pode usar "system("cls");"

 

Creio que em seu código, quando pergunta se a pessoa deseja continuar, ela digita o caracter e aperta o ENTER. Não sei se você quer especificamente desse modo, mas tem como fazer com que a pessoa apenas tecle "S" ou "N" sem precisar teclar ENTER posteriormente.

 

Basta usar "resp=getch(resp);"

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

6 minutos atrás, F1rmeza disse:

Ao invés de criar a função "limpa_tela", você pode usar "system("cls");"

 

A função dele é limpa linha, não limpa tela, ela faz outra coisa (o nome_limpa linha não é muito descritivo do que ela faz, eu preferiria clear_stdin ou algo assim).

 

 

8 minutos atrás, F1rmeza disse:

Creio que em seu código, quando pergunta se a pessoa deseja continuar, ela digita o caracter e aperta o ENTER. Não sei se você quer especificamente desse modo, mas tem como fazer com que a pessoa apenas tecle "S" ou "N" sem precisar teclar ENTER posteriormente.

 

Basta usar "resp=getch(resp);"

 

getch() não é função padrão da linguagem, faz parte da biblioteca não padrão conio que contém funções exclusivas para o prompt MS-DOS do Windows, portanto precisa dessa biblioteca, e o código só funcionará em sistemas Windows.

  • Curtir 1
  • Obrigado 1
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...