Ir ao conteúdo
  • Cadastre-se

duvida linguagem c lista encadeada!


ronaldo9123

Posts recomendados

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 
 
Link para o comentário
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

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...