Ir ao conteúdo
  • Cadastre-se
MaísaFrancieli

Variaveis sexo e corOlhos recebem 0

Recommended Posts

Boa noite,

Estou fazendo o algoritmo abaixo, o problema e na leitura debuguei e as variaveis sexo e corOlhos não estão recebendo o valor digitado, mas não consegui resolver esse problema peço ajuda. Agradeço desde já.

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

int main()
{
char sexo,corOlhos,corCblo;
int idade,maiorId,contH1835,contM1835,contM,contH;
float percH1835,percM1835;

idade=0;
maiorId=-1;
contH1835=0;
contM1835=0;
contM=0;
contH=0;

while(idade!=-1){

printf("Digite o sexo (M-masculino ou F-feminino):\n");
scanf("%s", &sexo);
printf("Digite a cor dos olhos (A-azuis,V-verdes ou C-castanhos):\n");
scanf("%s", &corOlhos);
printf("Digite a cor dos cabelos (L-loiros,C-castanhos ou P-pretos):\n");
scanf("%s", &corCblo);
printf("Digite a idade:\n");
scanf("%d",&idade);

while(sexo!='M' || sexo!='F'){
printf("DADO INVALIDO\n");
printf("Digite o sexo (M-masculino ou F-feminino):\n");
scanf("%s", &sexo);
}

while(corOlhos!='A' && corOlhos!='V' && corOlhos!='C'){
printf("DADO INVALIDO\n");
printf("Digite a cor dos olhos (A-azuis,V-verdes ou C-castanhos):\n");
scanf("%s", &corOlhos);
}
while(corCblo!='L' && corCblo!='C' && corCblo!='P'){
printf("DADO INVALIDO\n");
printf("Digite a cor dos cabelos (L-loiros,C-castanhos ou P-pretos):\n");
scanf("%s", &corCblo);
}
while(idade<0){
printf("DADO INVALIDO\n");
printf("Digite a idade:\n");
scanf("%d",&idade);
}

if(idade>maiorId || maiorId==-1){
maiorId=idade;
}

if(sexo=='M'){
contH++;
}else{
contM++;
}

if(sexo=='M' && (idade>=18 && idade<=35)){
contH1835++;
}
if(sexo=='F' && (idade>=18 && idade<=35)){
contM1835++;
}

}

if(contH!=0 || contM!=0){
percH1835=((100*contH1835)/contH);
percM1835=((100*contM1835)/contM);
}

printf("A maior idade e: %d\n",maiorId);
printf("Percentual de homens entre 18 e 35 anos: %f\n",percH1835);
printf("Percentual de mulheres entre 18 e 35 anos: %f\n",percM1835);
system("pause");
return 0;
}

Editado por dif
Usar a tag CODE para postar seus códigos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talvez não seja a solução desse problema, mas creio que há uma falha neste trecho:


printf("DADO INVALIDO\n");
printf("Digite o sexo (M-masculino ou F-feminino):\n");
scanf("%s", &sexo);
}
while(sexo!='M' || sexo!='F'){

Repare que você colocou que vai dar inválido se "sexo" for diferente de 'F' ou 'M', mas se ele for igual a um, será automaticamente diferente do outro, então sempre dará verdadeiro e mostrará erro. Inclusive, você colocou && nos outros whiles.

Editado por xico2000
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual foi a solução?

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main()

{

char sexo,corOlhos,corCblo;

int idade,maiorId,contH1835,cont1835VL,contM,contH,contTotal;

float percH1835,percM1835;

idade=0;

maiorId=-1;

contH1835=0;

cont1835VL=0;

contM=0;

contH=0;

contTotal=0;

printf("*************Pesquisa: Caracteristicas Fisicas *************\n");

while(idade!=-1){

printf("Digite a idade:\n");

scanf(" \n %d",&idade);

if(idade==-1){

break;

}

else{

while(idade<0){

printf("DADO INVALIDO\n");

printf("Digite a idade:\n");

scanf("\n %d",&idade);

}

}

printf("Digite o sexo (M-masculino ou F-feminino):\n");

scanf(" \n %c", &sexo);

while(sexo!='M' && sexo!='F'){

printf("DADO INVALIDO\n");

printf("Digite o sexo (M-masculino ou F-feminino):\n");

scanf(" \n %c", &sexo);

}

printf("Digite a cor dos olhos (A-azuis,V-verdes ou C-castanhos):\n");

scanf(" \n %c", &corOlhos);

while(corOlhos!='A'&& corOlhos!='V' && corOlhos!='C'){

printf("DADO INVALIDO\n");

printf("Digite a cor dos olhos (A-azuis,V-verdes ou C-castanhos):\n");

scanf(" \n %c", &corOlhos);

}

printf("Digite a cor dos cabelos (L-loiros,C-castanhos ou P-pretos):\n");

scanf("\n %c", &corCblo);

while(corCblo!='L' && corCblo!='C' && corCblo!='P'){

printf("DADO INVALIDO\n");

printf("Digite a cor dos cabelos (L-loiros,C-castanhos ou P-pretos):\n");

scanf(" \n %c", &corCblo);

}

if(idade>maiorId || maiorId==-1){

maiorId=idade;

}

if(sexo=='M'){

contH++;

}else{

contM++;

}

if(sexo=='M' && (idade>=18 && idade<=35)){

contH1835++;

}

if(sexo=='F' && (idade>=18 && idade<=35 && corOlhos=='V' && corCblo=='L')){

cont1835VL++;

}

contTotal++;

printf("-------------------------------------------------------------\n");

}

if(contTotal>0){

printf("A maior idade e: %d\n",maiorId);

if(cont1835VL>0){

percM1835=((100*cont1835VL)/contM);

printf("Percentual de mulheres entre 18 e 35 anos com olhos verdes e cabelos loiros: %f\n",percM1835);

}else{

printf("Nao existe entre os dados, mulheres entre 18 e 35 anos de olhos verdes e cabelos loiros!\n");

}

if(contH1835>0){

percH1835=((100*contH1835)/contH);

printf("Percentual de homens entre 18 e 35 anos: %f\n",percH1835);

}else{

printf("Nao existe entre os dados, homens entre 18 e 35 anos!\n");

}

}else{

printf("Nenhum dado foi fornecido!\n");

}

system("pause");

return 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×