Ir para conteúdo
Fórum Script Brasil

Matheus Engel

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que Matheus Engel postou

  1. 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(); void InserirInicio(int num); void InserirFim(int num); void InserirMeio(int num, int posicao); int Remover(int num); void Listar(); struct ElementoDaLista_Simples { int dado; struct ElementoDaLista_Simples *prox; } *Head; int main() { int op, num, pos, c; Head = NULL; while (1) { op = menu(); switch (op) { case 1: printf("Digite o numero desejado: "); scanf_s("%d", &num); while ((c = getchar()) != '\n' && c != EOF) {} // sempre limpe o buffer do teclado. InserirInicio(num); break; case 2: printf("Digite o numero desejado: "); scanf_s("%d", &num); while ((c = getchar()) != '\n' && c != EOF) {} // sempre limpe o buffer do teclado. InserirFim(num); break; case 3: 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; case 4: 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; case 5: Listar(); break; case 6: return 0; default: printf("Invalido\n"); } } return 0; } 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; } void InserirInicio(int num) { ElementoDaLista_Simples *NovoElemento; NovoElemento = (struct ElementoDaLista_Simples *)malloc(sizeof(struct ElementoDaLista_Simples)); NovoElemento->dado = num; if (Head == NULL) { Head = NovoElemento; Head->prox = NULL; } else { NovoElemento->prox = Head; Head = NovoElemento; } } void InserirFim(int num) { ElementoDaLista_Simples *NovoElemento; NovoElemento = (struct ElementoDaLista_Simples *)malloc(sizeof(struct ElementoDaLista_Simples)); ElementoDaLista_Simples *ElementoVarredura; ElementoVarredura = (struct ElementoDaLista_Simples *)malloc(sizeof(struct ElementoDaLista_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; } } void InserirMeio(int num, int posicao) { ElementoDaLista_Simples *NovoElemento; NovoElemento = (struct ElementoDaLista_Simples *)malloc(sizeof(struct ElementoDaLista_Simples)); ElementoDaLista_Simples *ElementoVarredura; ElementoVarredura = (struct ElementoDaLista_Simples *)malloc(sizeof(struct ElementoDaLista_Simples)); ElementoDaLista_Simples *ElementoAuxiliar; ElementoAuxiliar = (struct ElementoDaLista_Simples *)malloc(sizeof(struct ElementoDaLista_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; } } int Remover(int num) { ElementoDaLista_Simples *ElementoVarredura; ElementoVarredura = (struct ElementoDaLista_Simples *)malloc(sizeof(struct ElementoDaLista_Simples)); ElementoDaLista_Simples *Anterior; Anterior = (struct ElementoDaLista_Simples *)malloc(sizeof(struct ElementoDaLista_Simples)); ElementoVarredura = Head; while (ElementoVarredura != NULL) { if (ElementoVarredura->dado == num) { if (ElementoVarredura == Head) { Head = ElementoVarredura->prox; free(ElementoVarredura); return 1; } else { Anterior->prox = ElementoVarredura->prox ; free(ElementoVarredura); return 1; } } else { Anterior = ElementoVarredura; ElementoVarredura = ElementoVarredura->prox; } } return 0; } void Listar() { ElementoDaLista_Simples *ElementoVarredura; ElementoVarredura = (struct ElementoDaLista_Simples *)malloc(sizeof(struct ElementoDaLista_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 menu int menu(); void Inicio(); void Meio(); void Fim(); int Remover(); //------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Struct para inserção das variaveis nome, numero e email struct Contatos { char nome[50]; char numero[15]; char email[50]; int posicao; struct Contatos* proximo; } *Head; //------------------------------------------------------------------------------------------------------------------------------------------------------------------------- int main() { int opcao; Head = NULL; while (1) { opcao = menu(); switch (opcao) { case 1: Inicio(); break; case 2: Meio(); break; case 3: Fim(); break; case 4: Remover(); break; } } return 0; } //------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //menu de teclas para escolha da opção int 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. void Inicio() { typedef struct Contatos 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 = (struct Contatos*)malloc(sizeof(struct Contatos)); NovoContato->nome; NovoContato->numero; NovoContato->email; if (Head == NULL) { Head = NovoContato; Head->proximo = NULL; } else { NovoContato->proximo = Head; system("pause"); } } //------------------------------------------------------------------------------------------------------------------------------------------------------------------------- void Meio() { int posicao; typedef struct Contatos 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 = (struct Contatos*)malloc(sizeof(struct Contatos)); Contatos* ElementoVarredura; ElementoVarredura = (struct Contatos*)malloc(sizeof(struct Contatos)); Contatos* ElementoAuxiliar; ElementoAuxiliar = (struct Contatos*)malloc(sizeof(struct Contatos)); 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; } } //------------------------------------------------------------------------------------------------------------------------------------------------------------------------- void Fim() { typedef struct Contatos 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 = (struct Contatos*)malloc(sizeof(struct Contatos)); Contatos* ElementoVarredura; ElementoVarredura = (struct Contatos*)malloc(sizeof(struct Contatos)); 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; } } //------------------------------------------------------------------------------------------------------------------------------------------------------------------------- int Remover() { 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 = (struct Contatos*)malloc(sizeof(struct Contatos)); Contatos* Anterior; Anterior = (struct Contatos*)malloc(sizeof(struct Contatos)); ElementoVarredura = Head; while (ElementoVarredura != NULL) { if (ElementoVarredura->numero == num) { if (ElementoVarredura == Head) { Head = ElementoVarredura->proximo; free(ElementoVarredura); return 1; } else { Anterior->proximo = ElementoVarredura->proximo; free(ElementoVarredura); return 1; } } else { Anterior = ElementoVarredura; ElementoVarredura = ElementoVarredura->proximo; } } return 0; } Uma das minhas tentativas de faze-lo
×
×
  • Criar Novo...