joaok7 Postado Fevereiro 24, 2023 Compartilhar Postado Fevereiro 24, 2023 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 Outras opções de compartilhamento...
ThiagoAlves Postado Fevereiro 24, 2023 Compartilhar Postado Fevereiro 24, 2023 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 Outras opções de compartilhamento...
joaok7 Postado Fevereiro 24, 2023 Autor(a) Compartilhar Postado Fevereiro 24, 2023 Muito obrigado Thiago o maior problema tá sendo mesmo implementar a estrutura de dados lista que está sendo muito complicado. Link to comment Compartilhe em outros sites Outras opções de compartilhamento...
ThiagoAlves Postado Fevereiro 24, 2023 Compartilhar Postado Fevereiro 24, 2023 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 Compartilhe em outros sites Outras opções de compartilhamento...
joaok7 Postado Fevereiro 24, 2023 Autor(a) Compartilhar Postado Fevereiro 24, 2023 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 Compartilhe em outros sites Outras opções de compartilhamento...
Postagens Recomendadas
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.
Criar minha conta agoraÉ bem rápido!
Entrar
Você já tem uma conta?
Entrar agoraFaça o login agora.