Ir para conteúdo
Fórum Script Brasil
  • 0

Dificuldade na resolução de questão utilizando Struct


Felippe Melo

Pergunta

Olá, estou com dificuldade neste exercício de uma lista. Quando rodo o programa, o laço do for não funciona, ele para após o primeiro ciclo. Tem mudar alguma coisas para entender o que estava acontecendo, mas não consegui resolver. Acho que deve ter alguma coisa boba que eu não estou conseguindo ver e por isso a visão de outra pessoa iria e ajudar!

 

o enunciado: Escreva um programa que preencha, a partir do teclado, duas estruturas distintas do tipo vetor com as idades de 10pessoas.
A primeira estrutura do tipo vetor deverá receber somente as idades das pessoas do sexo masculino,
enquanto a segunda deverá armazenar as idades das pessoas do sexo feminino.
Após, o programa deverá exteriorizar os nomes, o sexo e as idades das pessoas que possuem idade
compreendida entre 20 (vinte) e 40 (quarenta) anos, inclusive.

#include <stdio.h>

struct masculino {
	char nome[20];
	int idade;
};

struct feminino {
	char nome[20];
	int idade;
};

int main(void){
	char escolha;
	int i;
	
struct masculino listam[10];
struct feminino listaf[10];

for (i = 0; i < 10; ++i){
	printf("Digite M para adicionar uma mulher ou H para um homem\n"); //Essa mensagem deve aparecer 10 vezes para que cada vez o possa colocar uma pessoa com o sexo diferente
	scanf("%c", &escolha);
		if (escolha == 'h'){
			printf("Digite o nome do homem\n");
			scanf("%s", listam[i].nome);
			printf("Digite a idade\n");
			scanf("%i", listam[i].idade);
				}
		else{
		printf("Digite o nome da mulher\n");
		scanf("%s", listaf[i].nome);
		printf("Digite a idade\n");
		scanf("%i", listaf[i].idade);
			}
		}
for (i = 0; i < 10; ++i){
	if ((listam[i].idade > 20 && listam[i].idade < 40) || (listaf[i].idade > 20 && listaf[i].idade < 40)){ //*a comparação para saber as idades de homens ou mulheres entre 20 e 40
		printf("As pessoas com idade entre 20 e 40 anos são\n");
		printf("%s, %i, %s, %i \n", listam[i].nome, listam[i].idade, listaf[i].nome, listaf[i].idade);
					} 
	else{
		printf("Nenhuma pessoa tem idade entre 20 e 40 anos\n");
				}
			}
			
system("pause");
	return 0;
} 

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

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

void linha (void)

{

printf ("\n");

}

struct masculino {
    char nome[20];
    int idade;
    char genero [20];
};

struct feminino {
    char nome[20];
    int idade;
    char genero [20];
};

int main () {

    int valid = 0;
    int escolha;
    int i;

    char fem [20] = "Feminino";
    char masc [20] = "Masculino";

struct masculino homem [10];
struct feminino mulher [10];

for (i = 0; i < 10; ++i){

    escolha = 0;

    do {

        printf("%dº - Digite 1 para adicionar uma mulher ou 2 para um homem: ", i+1);
        scanf("%d", &escolha);
        __fpurge (stdin);

       } while (escolha != 1 && escolha != 2);

        if (escolha == 2){
            printf("Digite o nome do homem: ");
            scanf ("%[^\n]", homem[i].nome);
             __fpurge (stdin);
            strcpy (homem[i].genero, masc);
            printf("Digite a idade: ");
            scanf ("%d", &homem[i].idade);
             __fpurge (stdin);

                }

        if (escolha == 1){
        printf("Digite o nome da mulher: ");
        scanf ("%[^\n]", mulher[i].nome);
         __fpurge (stdin);
        strcpy (mulher[i].genero, fem);
        printf("Digite a idade: ");
        scanf ("%d", &mulher[i].idade);
         __fpurge (stdin);

            }

        }

linha ();

for (i = 0; i < 10; ++i)

    {

        if (homem[i].idade >= 20 && homem[i].idade <= 40)

            {

            printf ("Nome: %s, idade: %d, gênero: %s ", homem[i].nome, homem[i].idade, homem[i].genero);


            linha();

            if (valid == 0)

            valid ++;

            }


        if (mulher[i].idade >= 20 && mulher[i].idade<= 40)

            {


            printf ("Nome: %s, idade: %d, gênero: %s ", mulher[i].nome, mulher[i].idade, mulher[i].genero);

            linha();

            if (valid == 0)
            valid ++;

            }

    }

    if (valid == 0)

        printf ("Nenhum homem ou mulher tem idade entre 20 e 40");

 return EXIT_SUCCESS;

 }

 

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...