Ir ao conteúdo

Posts recomendados

Postado

Alguem me ajude por favor, quando peço para digitar a cor dos olhos e cabelos, da um erro de que aparece na mesma linha e so da para digitar apenas uma letra...

Compile o algoritmo no seu Dev que você irá entender o que estou querendo dizer na digitação do cor dos olhos e do cabelos, ja tentei varias formas para tentar corrigir, mas não sei o que faz esse erro acontecer.

ja tentei assim também...

printf("Cor dos olhos e depois cor do cabelos: ");

scanf("%c %c", &olhos, &cabelos);

ou

printf("cor dos olhos:");

scanf("%c", &olhos);

printf("cor dos cabelos:");

scanf("%c", &cabelos);

 

mas quando executado aparece na mesma linha e só da para digitar apenas um "char";

 

 

int cont, idade, qtd=0, qtd2=0, porcentagem=0, qtdpessoas=0, qtdidade=0;
    float peso, altura, mediaidades;
    char olhos, cabelos;
    for(cont=1 ; cont<=20 ; cont++)
    {
        printf("Cor dos olhos: ");
        scanf("%c", &olhos);
        printf("Idade: ");
        scanf("%i", &idade);
        printf("Peso: ");
        scanf("%f", &peso);
        printf("Altura: ");
        scanf("%f", &altura);
        printf("Cor dos cabelos: ");
        scanf("%c", &cabelos);

        if(idade>50&&peso<60)
        {
            qtd=qtd+1;
        }
        if(altura<1.50)
        {
            qtdpessoas=qtdpessoas+1;
            qtdidade=qtdidade+idade;
        }
        if(olhos=='A'||olhos=='a')
        {
            porcentagem=porcentagem+1;
        }
        if(cabelos=='R'||cabelos=='r'&&olhos!='A'||olhos!='a')
        {
            qtd2=qtd2+1;
        }
    }
mediaidades=qtdidade/qtdpessoas;
porcentagem=(porcentagem/20)*100;
printf("A quantidade de pessoas com idade superior a 50 anos e peso inferior a 60 quilos é: %i", qtd);
printf("A media das idades das pessoas com altura inferior a 1,50 é: %f", mediaidades);
printf("A porcentagem de pessoas com olhos azuis entre todas as pessoas analisadas é: %i", porcentagem);
printf("A quantidade de pessoas ruivas e que não possuem olhos azuis é: %i", qtd2);
 

Postado
3 horas atrás, Gabriel Fernandes Seguro F disse:

Fácil, muda a declaração

 

"char olhos, cabelos;"

 

para

 

char olhos[10], cabelos[15];  

(o numero pode ser qualquer um maior/menor)

 

e quando for capturar os dados onde esta %c de um espaço entre  "  e  %c  ou seja, esta assim "%c" deixe " %c"

 

Vai la.

Depois de deixar char olhos[10]; e char cabelos[15];

 

modifique:

scanf("%c", &olhos);
scanf("%c", &cabelos);

 

para:
scanf("%s", olhos);
scanf("%s", cabelos);

 

E nessa area de if voce muda assim:

if(olhos[0]=='A'||olhos[0]=='a')
        {
            porcentagem=porcentagem+1;
        }
if(cabelos[0]=='R' || cabelos[0]=='r' && olhos[0] !='A' || olhos[0] !='a')
        {
            qtd2=qtd2+1;
        }

Postado
22 horas atrás, Bruno Pinto Castilho disse:

scanf("%c %c", &olhos, &cabelos);

 

 

Uma alternativa ao que os colegas disseram é:

 

scanf("%c%c%c",&olhos,&lixo,&cabelos);

O problema com o seu código é aquele espaço antes do segundo %c, se você trocar ele por outro %c resolve.

 

Lembrando que se a cor for capturada dessa forma só pode ser UMA letra, se quiser capturar mais de uma tem que setar o tamanho correto lá na criação do char.

 

Outra coisa que acho necessário pra evitar problemas é limpar o buffer antes de usar o %c, pois se você leu algo antes, um int, um float, ou qualquer coisa vai ficar um "\n" no buffer e ele pega isso antes de ler o teclado.

 

Nesse caso ficaria assim:

 

setbuf(stdin,NULL);
scanf("%c%c%c",&olhos,&lixo,&cabelos);

 

Visitante
Este tópico está impedido de receber novas respostas.

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!