Criei uma lista encadeada onde tenho 3 strcuts para cadastrar pessoa, O bug que acontece é que apos eu inserir o primeiro cadastro os telefones continuam acumulado no primeiro registro, emails também, olhe como está na imagem anexada.
struct agenda {char matricula[20];char nome[30];struct agenda *prox;struct tel *t;struct mail *m;};struct tel{char telefone[20];struct tel *prox;};struct mail{char email[30];struct mail *prox;};
Eu uso essas tres structs por que por exemplo uma pessoa pode ter mais de um telefone ou mais de um email.
Minhas funções de inserir:
void insereTel(struct tel **t,char tel[]){struct tel *p,*q;
p=(struct tel*)malloc(sizeof(struct tel));
strcpy(p->telefone,tel);
p->prox=*t;*t=p;}void insereMail(struct mail **m,char mail[]){struct mail *p;
p=(struct mail*)malloc(sizeof(struct mail));
strcpy(p->email,mail);
p->prox=*m;*m=p;}void inserePessoa (struct agenda **L,struct tel *T,struct mail *M,char n[],char end[]){struct agenda *p;
p=(struct agenda*)malloc(sizeof(struct agenda));
strcpy(p->matricula,n); strcpy(p->nome,end);
p->prox=*L;
p->t=T;
p->m=M;*L=p;}
Eu também mando os dados pelo menu quando ele seleciona a opção para fazer o registro:
Pergunta
Kernal112
Criei uma lista encadeada onde tenho 3 strcuts para cadastrar pessoa, O bug que acontece é que apos eu inserir o primeiro cadastro os telefones continuam acumulado no primeiro registro, emails também, olhe como está na imagem anexada.
Eu uso essas tres structs por que por exemplo uma pessoa pode ter mais de um telefone ou mais de um email.
Minhas funções de inserir:
Eu também mando os dados pelo menu quando ele seleciona a opção para fazer o registro:
main(){ struct agenda *Lista; struct tel *Tel; struct mail *Mail; int op; char matricula[20], nome[30], telefone[20], email[20]; char no; Lista=criaAgenda(); Tel=criaTel(); Mail=criaMail(); do{ system("cls"); printf("\n\n"); printf("\n[1] - Cadastra Aluno --Falta arrumar bug dos tel"); printf("\n[2] - Pesquisa Aluno (Matricula)"); printf("\n[3] - Remove Aluno"); printf("\n[4] - Total de alunos"); printf("\n[5] - Total de telefones"); printf("\n[6] - Limpar Lista"); printf("\n[7] - Salva em Disco"); printf("\n[8] - Carrega lista"); printf("\n\nDigite -> "); fflush(stdin); scanf("%d",&op); switch (op){ case 1: printf("\nMatricula -> "); fflush(stdin); scanf("%s",matricula); printf("\nNome -> "); fflush(stdin); scanf("%s",nome); do{ printf("\nTelefone -> "); fflush(stdin); scanf("%s",telefone); insereTel(&Tel,telefone); printf("\nPossui mais telefones -> [1] Sim [2] não\n"); scanf("%d",&op); }while(op!=2); do{ printf("\nEmail -> "); fflush(stdin); scanf("%s", email); insereMail(&Mail,email); printf("\nPossui mais emails? [1] Sim [2] não\n"); scanf("%d",&op); }while(op!=2); inserePessoa(&Lista,Tel,Mail,matricula,nome); break;
Aqui está o código completo do projeto:
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.