Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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






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

×