Por favor se alguém conseguir me ajudar com um trabalho da faculdade, preciso criar uma agenda de contatos com nome, numero e email. Já tenho uma parte da lista feita, mas ela possui apenas int, preciso adicionar string nela, ou seja, substituir int dado por char nome[50], char numero[15], char email[50]. Segue o código e o que devo fazer
Desenvolva um programa que emule as características de uma agenda de contatos em um celular. A lista deve conter as seguintes características: 1. (20% da nota) Deve-se ter uma lista de contatos de pessoas. Para criar esta lista utilize uma LISTA ENCADEADA. Deve-se armazenar o nome completo de cada pessoa, e-mail para contato e telefone celular. Para inserção dos dados, você pode criar uma leitura dos dados através de um menu na tela ou já deixá-los armazenados em um arquivo e só carregar este arquivo. Ou ambas soluções; 2. (20% da nota) Deve-se existir um menu na tela. Este menu deve permitir a inserção e remoção de novos contatos (caso optado pela inserção manual de dados) e a edição dos contatos já existentes. Deve-se também listar todos os contatos da lista e permitir sair do programa. A inserção de mais funções no menu fica a critério do aluno; 3. (30% da nota) Ao listar os contatos, dê para o usuário a opção de lista-los na ordem dos contatos cadastrados (ordem de inserção). Ao listar, liste todos os dados do usuário. Ao listar os contatos, dê para o usuário a opção de lista-los por ordem alfabética de nomes. O usuário também poderá escolher se deseja ordenar por nome de contatos (A-Z ou Z-A). Para a ordenação, utilize o MERGE SORT ou o QUICK SORT. A ordenação deve ser feita nos PONTEIROS de cada nó da lista; 4. (30% da nota) Crie uma FILA com contatos favoritos do usuário. Dê um limite para esta fila (5 ou 10 contatos por exemplo). Quando o usuário tentar adicionar aos favoritos um contato maior que o tamanho da fila, remova automaticamente um contato de acordo com as características de operação de uma fila;
#include<stdio.h>#include<stdlib.h>int menu();voidInserirInicio(int num);voidInserirFim(int num);voidInserirMeio(int num,int posicao);intRemover(int num);voidListar();structElementoDaLista_Simples{int dado;structElementoDaLista_Simples*prox;}*Head;int main(){int op, num, pos, c;Head= NULL;while(1){
op = menu();switch(op){case1:
printf("Digite o numero desejado: ");
scanf_s("%d",&num);while((c = getchar())!='\n'&& c != EOF){}// sempre limpe o buffer do teclado.InserirInicio(num);break;case2:
printf("Digite o numero desejado: ");
scanf_s("%d",&num);while((c = getchar())!='\n'&& c != EOF){}// sempre limpe o buffer do teclado.InserirFim(num);break;case3:
printf("Digite o numero desejado: ");
scanf_s("%d",&num);while((c = getchar())!='\n'&& c != EOF){}// sempre limpe o buffer do teclado.
printf("Digite a posicao que deseja inserir: ");
scanf_s("%d",&pos);while((c = getchar())!='\n'&& c != EOF){}// sempre limpe o buffer do teclado.InserirMeio(num, pos);break;case4:int res;
printf("Digite o numero a ser removido: ");
scanf_s("%d",&num);while((c = getchar())!='\n'&& c != EOF){}// sempre limpe o buffer do teclado.
res =Remover(num);if(res ==1)
printf("Numero removido.");else
printf("Numero não encontrado.");break;case5:Listar();break;case6:return0;default:
printf("Invalido\n");}}return0;}int menu(){int op, c;
system("Cls");
printf("1.Inserir no inicio da lista encadeada simples\n");
printf("2.Inserir no fim da lista encadeada simples\n");
printf("3.Inserir no meio da lista encadeada simples\n");
printf("4.Remover da lista encadeada simples\n");
printf("5.Listar a lista encadeada simples\n");
printf("6.Sair\n");
printf("Digite sua escolha: ");
scanf_s("%d",&op);while((c = getchar())!='\n'&& c != EOF){}// sempre limpe o buffer do teclado.
system("Cls");return op;}voidInserirInicio(int num){ElementoDaLista_Simples*NovoElemento;NovoElemento=(structElementoDaLista_Simples*)malloc(sizeof(structElementoDaLista_Simples));NovoElemento->dado = num;if(Head== NULL){Head=NovoElemento;Head->prox = NULL;}else{NovoElemento->prox =Head;Head=NovoElemento;}}voidInserirFim(int num){ElementoDaLista_Simples*NovoElemento;NovoElemento=(structElementoDaLista_Simples*)malloc(sizeof(structElementoDaLista_Simples));ElementoDaLista_Simples*ElementoVarredura;ElementoVarredura=(structElementoDaLista_Simples*)malloc(sizeof(structElementoDaLista_Simples));NovoElemento->dado = num;if(Head== NULL){Head=NovoElemento;Head->prox = NULL;}else{ElementoVarredura=Head;while(ElementoVarredura->prox != NULL)ElementoVarredura=ElementoVarredura->prox;ElementoVarredura->prox =NovoElemento;NovoElemento->prox = NULL;}}voidInserirMeio(int num,int posicao){ElementoDaLista_Simples*NovoElemento;NovoElemento=(structElementoDaLista_Simples*)malloc(sizeof(structElementoDaLista_Simples));ElementoDaLista_Simples*ElementoVarredura;ElementoVarredura=(structElementoDaLista_Simples*)malloc(sizeof(structElementoDaLista_Simples));ElementoDaLista_Simples*ElementoAuxiliar;ElementoAuxiliar=(structElementoDaLista_Simples*)malloc(sizeof(structElementoDaLista_Simples));NovoElemento->dado = num;if(posicao ==0){Head=NovoElemento;Head->prox = NULL;}else{ElementoVarredura=Head;for(int i =0; i < posicao -1; i++)ElementoVarredura=ElementoVarredura->prox;ElementoAuxiliar=ElementoVarredura->prox;ElementoVarredura->prox =NovoElemento;NovoElemento->prox =ElementoAuxiliar;}}intRemover(int num){ElementoDaLista_Simples*ElementoVarredura;ElementoVarredura=(structElementoDaLista_Simples*)malloc(sizeof(structElementoDaLista_Simples));ElementoDaLista_Simples*Anterior;Anterior=(structElementoDaLista_Simples*)malloc(sizeof(structElementoDaLista_Simples));ElementoVarredura=Head;while(ElementoVarredura!= NULL){if(ElementoVarredura->dado == num){if(ElementoVarredura==Head){Head=ElementoVarredura->prox;
free(ElementoVarredura);return1;}else{Anterior->prox =ElementoVarredura->prox ;
free(ElementoVarredura);return1;}}else{Anterior=ElementoVarredura;ElementoVarredura=ElementoVarredura->prox;}}return0;}voidListar(){ElementoDaLista_Simples*ElementoVarredura;ElementoVarredura=(structElementoDaLista_Simples*)malloc(sizeof(structElementoDaLista_Simples));ElementoVarredura=Head;if(ElementoVarredura== NULL){return;}while(ElementoVarredura!= NULL){
printf("%d ",ElementoVarredura->dado);ElementoVarredura=ElementoVarredura->prox;}
printf("\n");
system("pause");return;}
Agradeço desde já.
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------// Referencia para o menuint menu();voidInicio();voidMeio();voidFim();intRemover();//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------// Struct para inserção das variaveis nome, numero e emailstructContatos{char nome[50];char numero[15];char email[50];int posicao;structContatos* proximo;}*Head;//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------int main(){int opcao;Head= NULL;while(1){
opcao = menu();switch(opcao){case1:Inicio();break;case2:Meio();break;case3:Fim();break;case4:Remover();break;}}return0;}//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------//menu de teclas para escolha da opçãoint menu(){int opcao;int c;
system("Cls");
printf("1- Adicionar contato no inicio da lista\n");
printf("2- Adicionar contato em alguma posição na lista\n");
printf("3- Adicionar contato no final da lista\n");
printf("4- Remover contato\n");
printf("5- Listar contato por ordem de inserção\n");
printf("6- Listar contato por ordem A-Z\n");
printf("7- Listar contato por ordem Z-A\n");
printf("8- Créditos\n");
printf("9- Sair\n");
printf("Digite uma opção: \n");
scanf_s("%d",&opcao);while((c = getchar())!='\n'&& c != EOF){}// sempre limpe o buffer do teclado.
system("cls");return opcao;}//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------//Caso opção 1, digite as variaveis e crie uma nova struct para salvar.voidInicio(){typedefstructContatos cont;
cont pessoa,* p;
p =&pessoa;
p->nome;
p->numero;
p->email;
printf("Digite seu nome: \n");
fflush(stdin);
fgets(p->nome,50, stdin);
printf("Digite seu numero: \n");
fflush(stdin);
fgets(p->numero,15, stdin);
printf("Digite seu email: \n");
fflush(stdin);
fgets(p->email,50, stdin);
cont*NovoContato;NovoContato=(structContatos*)malloc(sizeof(structContatos));NovoContato->nome;NovoContato->numero;NovoContato->email;if(Head== NULL){Head=NovoContato;Head->proximo = NULL;}else{NovoContato->proximo =Head;
system("pause");}}//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------voidMeio(){int posicao;typedefstructContatos cont;
cont pessoa,* p;
p =&pessoa;
p->nome;
p->numero;
p->email;
printf("Digite seu nome: \n");
fflush(stdin);
fgets(p->nome,50, stdin);
printf("Digite seu numero: \n");
fflush(stdin);
fgets(p->numero,15, stdin);
printf("Digite seu email: \n");
fflush(stdin);
fgets(p->email,50, stdin);
printf("Digite a posicao que deseja inserir: ");
scanf_s("%d",&posicao);
cont*NovoContato;NovoContato=(structContatos*)malloc(sizeof(structContatos));Contatos*ElementoVarredura;ElementoVarredura=(structContatos*)malloc(sizeof(structContatos));Contatos*ElementoAuxiliar;ElementoAuxiliar=(structContatos*)malloc(sizeof(structContatos));NovoContato->nome;NovoContato->numero;NovoContato->email;if(posicao ==0){Head=NovoContato;Head->proximo = NULL;}else{ElementoVarredura=Head;for(int i =0; i < posicao -1; i++)ElementoVarredura=ElementoVarredura->proximo;ElementoAuxiliar=ElementoVarredura->proximo;ElementoVarredura->proximo =NovoContato;NovoContato->proximo =ElementoAuxiliar;}}//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------voidFim(){typedefstructContatos cont;
cont pessoa,* p;
p =&pessoa;
p->nome;
p->numero;
p->email;
printf("Digite seu nome: \n");
fflush(stdin);
fgets(p->nome,50, stdin);
printf("Digite seu numero: \n");
fflush(stdin);
fgets(p->numero,15, stdin);
printf("Digite seu email: \n");
fflush(stdin);
fgets(p->email,50, stdin);Contatos*NovoContato;NovoContato=(structContatos*)malloc(sizeof(structContatos));Contatos*ElementoVarredura;ElementoVarredura=(structContatos*)malloc(sizeof(structContatos));NovoContato->nome;NovoContato->numero;NovoContato->email;if(Head== NULL){Head=NovoContato;Head->proximo = NULL;}else{ElementoVarredura=Head;while(ElementoVarredura->proximo != NULL)ElementoVarredura=ElementoVarredura->proximo;ElementoVarredura->proximo =NovoContato;NovoContato->proximo = NULL;}}//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------intRemover(){int res;char num;
printf("Digite seu numero: \n");
fflush(stdin);
fgets(p->numero,15, stdin);
res =Remover();if(res ==1)
printf("Numero removido.");else
printf("Numero não encontrado.");Contatos*ElementoVarredura;ElementoVarredura=(structContatos*)malloc(sizeof(structContatos));Contatos*Anterior;Anterior=(structContatos*)malloc(sizeof(structContatos));ElementoVarredura=Head;while(ElementoVarredura!= NULL){if(ElementoVarredura->numero == num){if(ElementoVarredura==Head){Head=ElementoVarredura->proximo;
free(ElementoVarredura);return1;}else{Anterior->proximo =ElementoVarredura->proximo;
free(ElementoVarredura);return1;}}else{Anterior=ElementoVarredura;ElementoVarredura=ElementoVarredura->proximo;}}return0;}
Pergunta
Matheus Engel
Por favor se alguém conseguir me ajudar com um trabalho da faculdade, preciso criar uma agenda de contatos com nome, numero e email. Já tenho uma parte da lista feita, mas ela possui apenas int, preciso adicionar string nela, ou seja, substituir int dado por char nome[50], char numero[15], char email[50]. Segue o código e o que devo fazer
Desenvolva um programa que emule as características de uma agenda de contatos em um celular. A lista deve conter as seguintes características: 1. (20% da nota) Deve-se ter uma lista de contatos de pessoas. Para criar esta lista utilize uma LISTA ENCADEADA. Deve-se armazenar o nome completo de cada pessoa, e-mail para contato e telefone celular. Para inserção dos dados, você pode criar uma leitura dos dados através de um menu na tela ou já deixá-los armazenados em um arquivo e só carregar este arquivo. Ou ambas soluções; 2. (20% da nota) Deve-se existir um menu na tela. Este menu deve permitir a inserção e remoção de novos contatos (caso optado pela inserção manual de dados) e a edição dos contatos já existentes. Deve-se também listar todos os contatos da lista e permitir sair do programa. A inserção de mais funções no menu fica a critério do aluno; 3. (30% da nota) Ao listar os contatos, dê para o usuário a opção de lista-los na ordem dos contatos cadastrados (ordem de inserção). Ao listar, liste todos os dados do usuário. Ao listar os contatos, dê para o usuário a opção de lista-los por ordem alfabética de nomes. O usuário também poderá escolher se deseja ordenar por nome de contatos (A-Z ou Z-A). Para a ordenação, utilize o MERGE SORT ou o QUICK SORT. A ordenação deve ser feita nos PONTEIROS de cada nó da lista; 4. (30% da nota) Crie uma FILA com contatos favoritos do usuário. Dê um limite para esta fila (5 ou 10 contatos por exemplo). Quando o usuário tentar adicionar aos favoritos um contato maior que o tamanho da fila, remova automaticamente um contato de acordo com as características de operação de uma fila;
Agradeço desde já.
Uma das minhas tentativas de faze-lo
Editado por Matheus EngelLink 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.