joaok7 Posted February 24 Share Posted February 24 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 Share on other sites More sharing options...
ThiagoAlves Posted February 24 Share Posted February 24 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 Share on other sites More sharing options...
joaok7 Posted February 24 Author Share Posted February 24 Muito obrigado Thiago o maior problema tá sendo mesmo implementar a estrutura de dados lista que está sendo muito complicado. Link to comment Share on other sites More sharing options...
ThiagoAlves Posted February 24 Share Posted February 24 Então o struct em C é chatinho mesmo, isso porque ainda não viu ponteiro de memória rsrs, mas seguindo esses exemplo da struct de cima vai bem tranquilo. Estamos aí pra ajudar. Abraços! Link to comment Share on other sites More sharing options...
joaok7 Posted February 24 Author Share Posted February 24 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", ®istro.nome); printf("\nDigite a idade da pessoa: \n"); scanf("%d", ®istro.idade); printf("\nDigite o sexo M para masculino e F para feminino: \n"); scanf("%s", ®istro.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 Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now