Ir ao conteúdo
  • Cadastre-se

Variaveis sexo e corOlhos recebem 0


MaísaFrancieli

Posts recomendados

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;
}

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

#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;

}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...