Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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

@

 

Poste o que voce ja fez, para poder te ajudar.

Editado por slackforgo

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

Editado por dif
usar a tag para códigos

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






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

×