Ir ao conteúdo
  • Cadastre-se
ronaldo9123

duvida linguagem c lista encadeada!

Recommended Posts

Gente, esse exercicio é o ultimo da lista q estou fazendo, n estou dominando essa parte de lista encadeada, por favor me ajudem!!!

 

 

14. Faça um programa com o um menu que permita: 
 a) Ler o nome (char[200]) e a idade (int) de uma pessoa pelo teclado e adicionar a uma lista 
encadeada. 
 B) Imprimir o conteúdo da lista. 
 c) Procurar na lista a pessoa com um determinado nome (lido do teclado) e imprimir sua 
idade. 
 d) Imprimir o nome de todas as pessoas com idade maior do que X, onde X é um número lido 
do teclado. 
 e) Sair 
 

Compartilhar este post


Link para o post
Compartilhar em outros sites
#include <stdio.h>#include <stdlib.h>#include<time.h>struct lista { int idade; char nome[200]; struct lista* prox;};typedef struct lista Lista;Lista* inicializa (void){ return NULL;}/*void imprime (Lista* l){ Lista *p; for (p = l; p != NULL; p = p->prox) { printf(“nome:%s\n”, p->nome); }}*/Lista* insere (char nom[200], int idad, Lista *l){ Lista* novo = (Lista*) malloc(sizeof(Lista)); novo->nome= nom; novo->idade= idad; novo->prox = l; return novo;}int main (void){ int opção,I; char N[200]; Lista* l;  l = inicializa(); for(; {     printf("digite sua opção:");     printf("1 - para adicionar um nome a lista");     printf("2 - para imprimir a lista");     printf("3 - para procurar um nome");     printf("4 - para imprimir o nome das pessoas com idade maior do X");     printf("5 - para sair");     scanf("%d",&opção);     switch(opção)     {         case 1:             printf("\ndigite o nome da pessoa\n");             scanf("%d",&N);             printf("digite a idade da pessoa\n");             scanf("%d",&I);             insere(N,I,l);         case 2:             imprime(l);                      case 3:                                            } } return 0;}
 
 
 
 
 
 
foi o q eu consegui, a função imprime contem erros, mas sei nao onde, e tambem n sei fazer a função 3 e 4

foi o q eu consegui, a função imprime contem erros, mas sei nao onde, e tambem n sei fazer a função 3 e 4

Compartilhar este post


Link para o post
Compartilhar em outros sites

Okay, vejo três problemas aí.

1) insere(N,I,l) vai inserir no início da lista, e não no final. Isso significa que a cabeça da lista muda a cada inserção. Portanto, você deve fazer

l = insere(N,I,l);
2) Na hora de inserir o nome na lista, você faz novo->nome= nom;. Isso não vai funcionar. Use a função strcpy do string.h para copiar uma string para outra:
strcpy(novo->nome, nom);
3) Na hora de ler o nome, você está lendo como inteiro (%d), não como string (%s).

Agora, para a função C da sua questão, pesquise sobre strcmp da string.h, que compara duas strings e diz se são iguais ou, se forem diferentes, qual a que vem antes em ordem alfabética (de qualquer forma, você só precisa saber se são iguais ou diferentes mesmo). Depois que souber usar essa função, basta percorrer a lista (como você faz pra imprimir) procurando o que tem o nome especificado, e imprimindo sua idade quando encontrar.

Para a função D, basta percorrer a lista, e ir verificando a idade com um if; se for maior do que X, imprime o nome.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×