Jump to content

Por favor ajuda nesse código de estrutura de dados sou iniciante na área


Postagens Recomendadas

Elabore e implemente um algoritmo em linguagem C, que leia, Nome, idade e sexo de cada pessoa, armazenando-os numa Lista Encadeada. Após a leitura faça:

 

 

a) Imprima o Nome, idade e sexo das pessoas cuja idade seja maior que a idade da primeira pessoa.

 

b) Imprima o Nome e idade de todas as mulheres.

 

c) Imprima o Nome dos homens menores de 21 anos.

 

d) Exclusão Individualizada (Excluir o último registro da Lista).

 

A solução proposta deverá apresentar:

 

Menu;

A inclusão de forma individualizada deverá ser implementada no inicio da Lista (após cada inclusão, deverá retornar ao Menu);

Utilizar Struct;

Verificar: Lista Vazia, criada!

Link to comment
Compartilhe em outros sites

Boa tarde. 
Para dar inicio, vê se isso já ajuda:

 

#include <stdio.h>
#include <string.h>

struct Pessoa {
    char nome[50];
    int idade;
    char sexo;
};

int main() {
    struct Pessoa pessoas[] = {
        {"Ana", 25, 'F'},
        {"Bruno", 30, 'M'},
        {"Carla", 20, 'F'},
        {"Diego", 35, 'M'},
        {"Elaine", 27, 'F'}
    };
    int tamanho = sizeof(pessoas) / sizeof(pessoas[0]);
    int idade_minima = pessoas[0].idade;

    for (int i = 0; i < tamanho; i++) {
        if (pessoas[i].idade > idade_minima) {
            printf("Nome: %s, Idade: %d, Sexo: %c\n", pessoas[i].nome, pessoas[i].idade, pessoas[i].sexo);
        }
    }

    return 0;
}

aí você pode fazer uns "ifs" para selecionar o sexo masculino e feminino e as idades. Mas para começar é por esse caminho 

Link to comment
Compartilhe em outros sites

Então thiago vou te mandar o código pra vc dar uma olhada mas a parti do case 4 não estou conseguindo fazer case 1, case 2 e case 3 funcionando normal do case 4 diante estou com muita dificultade 

 

#include <stdio.h>
#include <stdlib.h>


typedef struct pessoa{
    char nome[40];
    int idade;
    char sexo;
}p;

typedef struct elemento{
    p info;
    struct elemento *prox;
}elem;

typedef elem*lista;

main(){
    lista*li;
    int menu, i;
    int criada = 0;
    p registro;
    p next;
    elem *no, *aux;
    int cont = 0;
    int ocupada = 0;
    int idade;
    int encontrei;

do{
  system("cls");
  printf("\n Menu principal");
  printf("\n");
  printf("\n 1 - Iniciar lista");
  printf("\n 2 - cadastrar");
  printf("\n 3 - relatorio do menu");
  printf("\n 4 - Imprimir o Nome, idade e sexo das pessoas cuja idade seja maior que a idade da primeira pessoa");
  printf("\n 5 - Imprimir o Nome e idade de todas as mulheres");
  printf("\n 6 - Imprimir o Nome dos homens menores de 21 anos");
  printf("\n 7 - Excluir registro");
  printf("\n 8 - sair do programa \n");
  printf("\n");
  printf("Escolha uma opcao do menu: ");
  scanf("%d", &menu);
  system("pause");

  switch(menu){
  case 1:
     if(criada==1){
        printf("\n Lista ja criada!!");
     }
     else{
        li = (lista *)malloc(sizeof(lista));
        if(li!= NULL){
            *li = NULL;
            printf("\n Lista foi criada com sucesso!!! \n");
            criada = 1;
        }
        else{
            printf("Nao ha espaco para criar a lista! \n");
        }
     }
    break;
  case 2:
       if(criada==0){
        printf("A lista ainda nao foi criada retorne ao menu e digite a opcao 1!");
       }
       else{
        printf(" \nDigite o nome da pessoa: \n");
        scanf("%s", &registro.nome);
        printf("\nDigite a idade da pessoa: \n");
        scanf("%d", &registro.idade);
        printf("\nDigite o sexo M para masculino e F para feminino: \n");
        scanf("%s", &registro.sexo);
        no = (elem *) malloc (sizeof (elem));
        if(no == NULL){
           printf("\nNao ha espaço");
        }
        else{
         no->info = registro;
         no->prox = (*li);
         *li = no;
         printf("A inclusao feita com sucesso \n");
        }
       }
    break;
  case 3:
      if(criada==0){
        printf("A lista ainda nao foi criada retorne ao menu e digite a opcao 1!");
       }
       else{
        if((*li == NULL)){
            printf("\n A lista ainda esta vazia!");
        }
        else{
         aux = *li;
         while(aux!=NULL){
            cont++;
          printf("\n posicao na lista %d",cont);
          printf("\nNome da pessoa: %s",aux->info.nome);
          printf("\nA idade da pessoa eh: %d",aux->info.idade);
          printf("\nO sexo da pessoa eh: %s", aux->info.sexo);
          aux = aux->prox;
         }
       }

    break;
  case 4:
      if(criada==0){
        printf("A lista ainda nao foi criada retorne ao menu e digite a opcao 1!");
      }
      else{
        if((*li == NULL)){
            printf("\n A lista ainda esta vazia!");
        }
        else{
           encontrei = 0;
           idade = next.idade;
           if(next.idade > idade){
                printf("\n  |Nome: %s               ",next.nome);
                no = no->prox;

           }
           else{

           }

          }
           }

        break;
  case 5:
       printf("\n opcao 5 \n");
    break;
  case 6:
       printf("\n opcao 6 \n");
    break;
  case 7:
       printf("\n opcao 7 \n");
    break;
  case 8:
       printf("\n opcao 8 \n");
    break;

  default:
    printf("Opcao invalida digite uma opcao valida por favor!!! \n");
  }
  }

  system("pause");
  }while(menu!=8);

return 0;
}

Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...