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;}
Utilizamos cookies e tecnologias semelhantes de acordo com a nossa Política de Privacidade, e ao continuar navegando, você concorda com estas condições.
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.