Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

noob of programmation

Características de habitantes(em C).

Recommended Posts

(Postei sem querer no lugar errado, e não consigo deletar, agora já foi. :unsure:)

 

Esse algoritmo é o primeiro que faço com strings e estou tendo dificuldades com ele pois não atende a condição imposta no terceiro if, devido esse problema também não sei se ele vai rodar como o esperado.Desde já agradeço qualquer ajuda.

 

23. Foi realizada uma pesquisa de algumas características físicas da população de uma certa região, a qual coletou os seguintes dados referentes a cada habitante para serem analisados:
- sexo (masculino e feminino)
- cor dos olhos (azuis, verdes ou castanhos)
- cor dos cabelos ( louros, castanhos, pretos)
- idade
Faça um algoritmo que determine e escreva:
- a maior idade dos habitantes
- a quantidade de indivíduos do sexo feminino cuja idade está entre 18 e 35 anos inclusive
e que tenham olhos verdes e cabelos louros.
O final do conjunto de habitantes é reconhecido pelo valor -1 entrada como idade.
o algoritmo que eu fiz foi esse:
#include <stdio.h>
int main(void){
char sexo, masculino, feminino, olho, azul, verde, castanho;
char cabelo, louro, castanho2, preto;
double idade;
int x, i, maior;
for(x=1; x>0; x++){
printf("\nQual a idade?");
scanf("%d", &idade);
printf("\nQual o sexo?");
scanf("%s", &sexo);
printf("\nQual a cor dos olhos?");
scanf("%s", &olho);
printf("\nQual a cor do cabelo?");
scanf("%s", &cabelo);
if(x==1){
maior=idade;}
else if(idade>maior){
maior=idade;}
if(idade>17 && idade<36 && sexo==feminino && olho==verde && cabelo==louro){
i++;}
if(idade==1){
printf("\nA maior idade e essa %i e a quantidade de individuos e essa %i.", maior, i);
return 0;}}}

 

no segundo if eu botei bastantes condições(acho que so é possivel duas), iria tentar arrumar posteriormente mas como o código já tava dando esse erro no terceiro if, deixei desse jeito e fiquei tentando arrumar o terceiro if.

Compartilhar este post


Link para o post
Compartilhar em outros sites

P.s.:Sei que devo usar vetores para manipular strings, mas não sei como fazer-lo ainda, esse algoritmo foi mais um rascunho.Minha lista de exercicios pediu que esse código fosse feito somente com uso de condicional e estrutura de repetição, mas não consegui imaginar como fazer o algoritmo sem o uso de caracteres.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas o seu professor pediu para fazer o exercício utilizando strings? As cores de cabelos e olhos podem ser lidas como int. Exemplo:

 

1 - azul

2 - verde

3 - castanho

 

Ou então como char, usando a primeira letra da palavra, exemplo:

'a' - azul

'v' - verde

'c' - castanho

 

E nesse caso, não é necessário pensar em vetores (ainda mais vetores de strings). Não é preciso armazenar cara cor de cabelos e olhos digitadas, você só vai precisar delas no momento de fazer as comparações.

 

#include <stdio.h>

int main (void)
{
	int sexo, idade, cor_olhos, cor_cabelos;
	int maior_idade = 0, quant_fem = 0;
	int FLAG = 0; // variável de controle para mostrar ou não os dados no final da execução: 0 = não mostrar, 1 = mostrar
	
	for( int i = 0; ; i++ ){
		
		printf( "Idade: " );
		scanf( "%i", &idade );
		if (idade < 0) // NÃO EXISTE idade negativa, então... se menor que 0, interrompe o loop e vai para a parte de exibição dos dados 
			break;
		
		if (!i) // isso é o mesmo que: if (i == 0) {...}
		        // SE "i" estiver valendo 0, significa que é a primeira passagem pelo loop. Logo, sendo a primeira idade lida ela consequentemente será a maior...
			maior_idade = idade;
		else if ( idade > maior_idade ) // se não for a primeira passagem no loop... 
			maior_idade = idade; //... checa se a idade atual é maior que a armazenada na variavel 'maior_idade'. Se for, a idade é substituida.
		
		// leitura dos dados restantes...
		printf( "Sexo [1- Masculino, 2- Feminino]: " );
		scanf( "%i", &sexo );
		printf( "Cor dos Olhos [1- Azuis, 2- Verdes, 3- Castanhos]: " );
		scanf( "%i", &cor_olhos );
		printf( "Cor dos Cabelos [1- Louros, 2- Castanhos, 3- Pretos]: " );
		scanf( "%i", &cor_cabelos );
		
		
		if ( sexo == 2 ) // se for feminino E... 
			if (( idade >= 18 ) && ( idade <= 35 )) // se a idade estiver entre 18 e 35, E...
				if ( cor_olhos == 2 ) // se a cor dos olhos forem verdes...
					if ( cor_cabelos == 1 ) // se a cor dos cabelos forem louros...
						quant_fem++; // media_fem = media_fem + 1;
						
		FLAG = 1; // mudamos para 1, há dados para serem apresentados...					                
	}
	
	if (!FLAG) // if (FLAG == 0)
		printf("Nao ha dados a serem apresentados!");
	else {
		printf("Maior Idade: %i\nQuantidade (Feminino, 18~35, Olhos Verdes, Cabelos Louros): %i",
				maior_idade, quant_fem);
	}
	return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.