Boa noite! Preciso resolver o seguinte problema: Elabore um programa em C que processe uma pesquisa sobre algumas características físicas da população de uma certa região. Devem ser coletados os seguintes dados referentes a cada habitante para serem analisados:
A) Quantidade de Homens e Mulheres que responderam a pesquisa
B) O nome e a idade do Habitante mais velho
C)O nome e a quantidade de mulheres com idade de 18 a 35 anos
D) O nome e a idade dos homens loiros e de olhos azuis.
*Meu grande problema é: Quando peço para continuar a pesquisar e inserir nome, cor dos olhos, cor dos cabelos e idade, ao invés dele ir para a primeira pergunta: "Qual seu nome?", ele vai para "Qual seu sexo?" e segue com as outras perguntas.
Além do mais não consegui colocar uma string usando um vetor de caracteres. Imprimi o nome com um carácter somente: "A", "B","C" e assim por diante.
Alguém pode me dizer como resolver esses problemas?
P.s: Abaixo segue o meu código em C
Obrigada desde de então! P.s.: Sou iniciante em programação e linguagem C, agradeço muito a ajuda de vocês.
int main (){
struct senso{
char nome;
int idade,cc,co,sexo;
};
struct senso lista[20]={0};
int i=0,x,Qh=0,Qm=0,ih_velho,qtd18_35=0,id_loiro_azul[10]={0};
char nh_velho,n18_35[10]={0},nhm_loiro_azul[10]={0};
while (i<=2){
printf ("Qual é o seu nome?\n");
scanf("%c",&lista.nome); printf ("Qual é o seu sexo?\n[1]M\n[2]F\n"); scanf ("%d",&lista.sexo); printf ("Qual é a sua idade?\n"); scanf ("%d",&lista.idade); printf ("Qual é a cor do seu cabelo?\n[1]Loiro\n[2]Castanhos\n[3]Pretos\n"); scanf ("%d",&lista.cc); printf ("Qual é a cor dos seus olhos?\n[1]Azuis\n[2]Verdes\n[3]Castanhos\n"); scanf ("%d",&lista.co);
printf("Deseja continuar?\n[1]Sim\n[2]Não\n"); scanf("%d",&x); system("clear"); /* */ if (x==1){ i++; } /* Caso a condição for diferente 1 o acumuldor receberá 1000 fzendo com que o programa encerre, pois a condição do while está enquanto i for menor igual a 3 */ else { i=1000; } }
/* 1 - Quantidade de homens e mulheres que responderam a pesquisa */
for (i=0;i<=2;i++){ if (lista.sexo==1) { Qh=Qh+1; }else { if (lista.sexo==2){ Qm=Qm+1; } } } printf ("\nTotal Homens/Mulheres:\n[Homens]%d\n[Mulheres]%d\n",Qh,Qm);
/* 2 - Nome e idade habitante mais velho */ ih_velho=0; for (i=0;i<=2;i++){ if (ih_velho<lista.idade) { nh_velho = lista.nome; ih_velho = lista.idade; } } printf ("\nNome/Idade habitante mais velho:\n[Nome]%c\n[Idade]%d\n",nh_velho,ih_velho);
/* 3.1 - Nome de mulheres com idade de 18 a 35 anos */
for (i=0;i<=2;i++){ if ((lista.idade>=18 || lista.idade<=35) && lista.sexo==2) { for (i=0;i<=2;i++){ n18_35=lista.nome; } } } printf ("\nNomes das mulheres entre 18 a 35:\n"); for (i=0;i<=2;i++){ printf ("[Nome]%c\n",n18_35); } /* 3.2 - Quantidade de mulheres com idade entre de 18 a 35 anos */
for (i=0;i<=2;i++){ if ((lista.idade>=18 || lista.idade<=35) && lista.sexo==2){ qtd18_35 = qtd18_35 +1; } } printf ("[Qtd]:%d\n",qtd18_35);
/* 4. O nome e a idade dos homens loiros e de olhos azuis */ for (i =0;i<=2;i++){ if (lista.sexo==1 && lista.cc==1 && lista.co==1){ for (i=0;i<=2;i++){ nhm_loiro_azul=lista.nome; id_loiro_azul=lista.idade; } } } printf ("\nHomem loiro/olho azul:\n"); for (i=0;i<=2;i++){ printf ("[Nome/Idade]:%c/%d\n",nhm_loiro_azul,id_loiro_azul); }
Pergunta
arenatinhanunes
Boa noite! Preciso resolver o seguinte problema: Elabore um programa em C que processe uma pesquisa sobre algumas características físicas da população de uma certa região. Devem ser coletados os seguintes dados referentes a cada habitante para serem analisados:
A) Quantidade de Homens e Mulheres que responderam a pesquisa
B) O nome e a idade do Habitante mais velho
C)O nome e a quantidade de mulheres com idade de 18 a 35 anos
D) O nome e a idade dos homens loiros e de olhos azuis.
*Meu grande problema é: Quando peço para continuar a pesquisar e inserir nome, cor dos olhos, cor dos cabelos e idade, ao invés dele ir para a primeira pergunta: "Qual seu nome?", ele vai para "Qual seu sexo?" e segue com as outras perguntas.
Além do mais não consegui colocar uma string usando um vetor de caracteres. Imprimi o nome com um carácter somente: "A", "B","C" e assim por diante.
Alguém pode me dizer como resolver esses problemas?
P.s: Abaixo segue o meu código em C
Obrigada desde de então! P.s.: Sou iniciante em programação e linguagem C, agradeço muito a ajuda de vocês.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (){
struct senso{
char nome;
int idade,cc,co,sexo;
};
struct senso lista[20]={0};
int i=0,x,Qh=0,Qm=0,ih_velho,qtd18_35=0,id_loiro_azul[10]={0};
char nh_velho,n18_35[10]={0},nhm_loiro_azul[10]={0};
while (i<=2){
printf ("Qual é o seu nome?\n");
scanf("%c",&lista.nome);
printf ("Qual é o seu sexo?\n[1]M\n[2]F\n");
scanf ("%d",&lista.sexo);
printf ("Qual é a sua idade?\n");
scanf ("%d",&lista.idade);
printf ("Qual é a cor do seu cabelo?\n[1]Loiro\n[2]Castanhos\n[3]Pretos\n");
scanf ("%d",&lista.cc);
printf ("Qual é a cor dos seus olhos?\n[1]Azuis\n[2]Verdes\n[3]Castanhos\n");
scanf ("%d",&lista.co);
printf("Deseja continuar?\n[1]Sim\n[2]Não\n");
scanf("%d",&x);
system("clear");
/* */
if (x==1){
i++;
}
/* Caso a condição for diferente 1 o acumuldor receberá 1000 fzendo com que o programa encerre, pois a condição do while está enquanto i for menor igual a 3 */
else {
i=1000;
}
}
/* 1 - Quantidade de homens e mulheres que responderam a pesquisa */
for (i=0;i<=2;i++){
if (lista.sexo==1) {
Qh=Qh+1;
}else { if (lista.sexo==2){
Qm=Qm+1;
}
}
}
printf ("\nTotal Homens/Mulheres:\n[Homens]%d\n[Mulheres]%d\n",Qh,Qm);
/* 2 - Nome e idade habitante mais velho */
ih_velho=0;
for (i=0;i<=2;i++){
if (ih_velho<lista.idade) {
nh_velho = lista.nome;
ih_velho = lista.idade;
}
}
printf ("\nNome/Idade habitante mais velho:\n[Nome]%c\n[Idade]%d\n",nh_velho,ih_velho);
/* 3.1 - Nome de mulheres com idade de 18 a 35 anos */
for (i=0;i<=2;i++){
if ((lista.idade>=18 || lista.idade<=35) && lista.sexo==2) {
for (i=0;i<=2;i++){
n18_35=lista.nome;
}
}
}
printf ("\nNomes das mulheres entre 18 a 35:\n");
for (i=0;i<=2;i++){
printf ("[Nome]%c\n",n18_35);
}
/* 3.2 - Quantidade de mulheres com idade entre de 18 a 35 anos */
for (i=0;i<=2;i++){
if ((lista.idade>=18 || lista.idade<=35) && lista.sexo==2){
qtd18_35 = qtd18_35 +1;
}
}
printf ("[Qtd]:%d\n",qtd18_35);
/* 4. O nome e a idade dos homens loiros e de olhos azuis */
for (i =0;i<=2;i++){
if (lista.sexo==1 && lista.cc==1 && lista.co==1){
for (i=0;i<=2;i++){
nhm_loiro_azul=lista.nome;
id_loiro_azul=lista.idade;
}
}
}
printf ("\nHomem loiro/olho azul:\n");
for (i=0;i<=2;i++){
printf ("[Nome/Idade]:%c/%d\n",nhm_loiro_azul,id_loiro_azul);
}
return 0;
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.