Enviado em 26/11/2020 - 20:12h
Boa noite, alguém pode me ajudar a colocar a opção excluir nesse código, tem que procurar pelo nome da pessoa e fazer a exclusão, segue o que eu conseguir fazer até agora.#include<stdio.h> #include<stdlib.h> #include<string.h> #include <locale.h> struct stNo { int info, idade, celular; char nome[100],endereco[100], sexo, cidade[80], email[40]; struct stNo *prox; }; struct stNo *cria_no() { struct stNo *p; if ((p = (struct stNo *) malloc(sizeof(struct stNo))) == NULL) return NULL; else { p->prox = NULL; return p; } } void insereLista(struct stNo **list){ struct stNo *p,*q; int n, idade, celular; char name[100], endereco[100], sexo, cidade[80], email[40]; fflush(stdin); printf("\nDigite o valor do nó:"); scanf("%i",&n); fflush(stdin); printf("\nDigite o nome:"); gets(name); fflush(stdin); //printf("\nDigite o seu sexo [F][M]:"); //scanf("%c",&sexo); //fflush(stdin); //printf("\nDigite sua idade:"); //scanf("%i",&idade); //fflush(stdin); //printf("\nDigite seu endereço:"); //gets(endereco); //fflush(stdin); //printf("\nDigite sua cidade:"); //gets(cidade); //fflush(stdin); //printf("\nDigite seu celular:"); //scanf("%i",&celular); //fflush(stdin); //printf("\nDigite seu e-mail:"); //gets(email); //fflush(stdin); if(*list==NULL){ //lista vazia p = cria_no(); *list = p; p->prox = NULL; p->info = n; strcpy(p->nome,name); p->sexo=sexo; p->idade=idade; strcpy(p->endereco,endereco); strcpy(p->cidade,cidade); p->celular=celular; strcpy(p->email,email); } else{ p=*list; while(p->prox!=NULL) p=p->prox;// posiciona no final da lista q = cria_no(); p->prox = q; q->prox = NULL; q->info = n; strcpy(q->nome,name); *list = q; }; }; void mostraLista(struct stNo **list){ struct stNo *p; if(*list!=NULL){ p=*list; while(p->prox!=NULL){ printf(" %d->",p->info); p = p->prox; }; printf(" %d->",p->info); } else printf("\nLista Vazia"); }; void excluirLista(struct stNo **list){ struct stNo *p,*q; int n; char name[100]; if(*list!=NULL){ //lista vazia p = *list; while (p->prox!=NULL && strcmp(p->nome, name) != 0) { p = p->prox; }; if(strcmp(p->nome, name) == 0){ printf("\nCódigo: %d",p->info); printf("\nNome: %s",p->nome); if(p->prox==NULL){ free(p); *list =NULL; }else{ while(p->prox!=NULL){ q=p; p=p->prox; } q->prox=NULL; free(p); else{ q=p->prox; free(p); *list=q; } else{ q->prox=NULL; free(p); } }else{ printf("\nLista Vazia"); } }; void visualizarLista(struct stNo **list){ struct stNo *p; int n; char name[100]; fflush(stdin); printf("\nDigite o nome:"); gets(name); fflush(stdin); if (*list!=NULL) { p = *list; while (p->prox!=NULL && strcmp(p->nome, name) != 0) { p = p->prox; }; if(strcmp(p->nome, name) == 0){ printf("\nCódigo: %d",p->info); printf("\nNome: %s",p->nome); //printf("\nSexo: %c",p->sexo); //printf("\nIdade: %d",p->idade); //printf("\nEndereço: %s",p->endereco); //printf("\nCidade: %s",p->cidade); //printf("\nCelular: %i",p->celular); //printf("\nE-mail: %s",p->email); }; } else printf("\nLista Vazia"); }; main(){ setlocale(LC_ALL,"Portuguese"); struct stNo *lista; int menu; lista = NULL; // inicializando a lista vazia do{ system("cls"); printf("\n"); mostraLista(&lista); printf("\n\n"); printf("[1-Inserir] "); printf("[2-Visualizar] "); printf("[3-Excluir] "); printf("[4-Sair] "); printf("Opção:"); scanf("%i",&menu); switch(menu){ case 1 : insereLista(&lista); break; case 2 : visualizarLista(&lista); break; case 3 : excluirLista(&lista); break; case 4 : printf("\nSaindo..."); break; default: printf("\nCódigo Inválido"); } printf("\n");system("pause"); }while(menu!=3); }
Enviado em 01/12/2020 - 05:24h
#include<stdio.h> #include<stdlib.h> #include<string.h> #include <locale.h> struct stNo { int info, idade, celular; char nome[100],endereco[100], sexo, cidade[80], email[40]; struct stNo *prox; }; struct stNo *cria_no() {
struct stNo *cria_no(void)
struct stNo *p; if ((p = (struct stNo *) malloc(sizeof(struct stNo))) == NULL)
return NULL; else { p->prox = NULL; return p; } }
struct stNo *cria_no(void){ struct stNo *p=malloc(sizeof *p); if(p) p->prox=NULL; return p; }
void insereLista(struct stNo **list){
struct stNo *p,*q; int n, idade, celular; char name[100], endereco[100], sexo, cidade[80], email[40]; fflush(stdin);
printf("\nDigite o valor do nó:"); scanf("%i",&n); fflush(stdin);
printf("\nDigite o nome:"); gets(name);
fflush(stdin); //printf("\nDigite o seu sexo [F][M]:"); //scanf("%c",&sexo); //fflush(stdin); //printf("\nDigite sua idade:"); //scanf("%i",&idade); //fflush(stdin); //printf("\nDigite seu endereço:"); //gets(endereco); //fflush(stdin); //printf("\nDigite sua cidade:"); //gets(cidade); //fflush(stdin); //printf("\nDigite seu celular:"); //scanf("%i",&celular); //fflush(stdin); //printf("\nDigite seu e-mail:"); //gets(email); //fflush(stdin); if(*list==NULL){ //lista vazia
struct list_node { struct XYZ dados; struct list_node *next; }; struct list { struct list_node *first, *last; size_t size; }; struct list *create_list(void){ struct list *nl=malloc(sizeof *nl); if(nl){ nl->first=nl->last=NULL; nl->size=0; } return nl; } bool insert_list_end(struct list *l, const struct XYZ *p_data){ struct list_node *ln if(!l || !p_data || !(ln=malloc(sizeof *ln)) return false; ln->data=*p_data; ln->next=NULL; if(list->first==NULL) list->first=list->last=ln; else list->last->next=ln; ++list->size; return true; } bool insert_list_start(struct list *l, const struct XYZ *p_data){ struct list_node *ln if(!l || !p_data || !(ln=malloc(sizeof *ln)) return false; ln->data=*p_data; ln->next=list->first; list->first=ln; if(list->last==NULL) list->last=list->first; ++list->size; return true; } /* etc. */
p = cria_no(); *list = p; p->prox = NULL; p->info = n; strcpy(p->nome,name); p->sexo=sexo; p->idade=idade; strcpy(p->endereco,endereco); strcpy(p->cidade,cidade); p->celular=celular; strcpy(p->email,email); } else{ p=*list; while(p->prox!=NULL) p=p->prox;// posiciona no final da lista q = cria_no(); p->prox = q; q->prox = NULL; q->info = n; strcpy(q->nome,name); *list = q; }; };
void mostraLista(struct stNo **list){
struct stNo *p; if(*list!=NULL){ p=*list; while(p->prox!=NULL){ printf(" %d->",p->info); p = p->prox; }; printf(" %d->",p->info); } else printf("\nLista Vazia"); };
void excluirLista(struct stNo **list){ struct stNo *p,*q; int n; char name[100]; if(*list!=NULL){ //lista vazia p = *list; while (p->prox!=NULL && strcmp(p->nome, name) != 0) { p = p->prox; }; if(strcmp(p->nome, name) == 0){ printf("\nCódigo: %d",p->info); printf("\nNome: %s",p->nome); if(p->prox==NULL){ free(p); *list =NULL; }else{ while(p->prox!=NULL){ q=p; p=p->prox; } q->prox=NULL; free(p); else{ q=p->prox; free(p); *list=q; } else{ q->prox=NULL; free(p); } }else{ printf("\nLista Vazia"); } }; void visualizarLista(struct stNo **list){
struct stNo *p; int n; char name[100]; fflush(stdin); printf("\nDigite o nome:"); gets(name); fflush(stdin); if (*list!=NULL) { p = *list; while (p->prox!=NULL && strcmp(p->nome, name) != 0) { p = p->prox; }; if(strcmp(p->nome, name) == 0){ printf("\nCódigo: %d",p->info); printf("\nNome: %s",p->nome); //printf("\nSexo: %c",p->sexo); //printf("\nIdade: %d",p->idade); //printf("\nEndereço: %s",p->endereco); //printf("\nCidade: %s",p->cidade); //printf("\nCelular: %i",p->celular); //printf("\nE-mail: %s",p->email); }; } else printf("\nLista Vazia"); }; main(){
setlocale(LC_ALL,"Portuguese"); struct stNo *lista; int menu; lista = NULL; // inicializando a lista vazia do{ system("cls");
printf("\n"); mostraLista(&lista); printf("\n\n"); printf("[1-Inserir] "); printf("[2-Visualizar] "); printf("[3-Excluir] "); printf("[4-Sair] "); printf("Opção:"); scanf("%i",&menu); switch(menu){ case 1 : insereLista(&lista); break; case 2 : visualizarLista(&lista); break; case 3 : excluirLista(&lista); break; case 4 : printf("\nSaindo..."); break; default: printf("\nCódigo Inválido"); } printf("\n");system("pause"); }while(menu!=3); }
Enviado em 01/12/2020 - 19:37h
Muito obrigado pelas dicas Paulo, sabe que grande parte desse código foi o professor que passou para a gente. Você poderia me ajudar em outra duvida??Enviado em 02/12/2020 - 11:54h
Como eu faço para fazer esse código com lista duplamente encadeada que também seja arquivo, A lista deve ser salva em arquivo ao sair e ao entrar ler os registros do arquivo. E como coloco essa opção no Menu visualizar mostrando todos os registros da agenda (um por tela). Muito obrigado pela sua atenção!!#include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> #include <ctype.h> struct stNo { int info; char nome[50]; int idade; char sexo; char endereco[100]; char cidade[40]; char celular[11]; char email[60]; struct stNo *ant,*pos; }; struct stNo *cria_no() { struct stNo *p; if ((p = (struct stNo *) malloc(sizeof(struct stNo))) == NULL) return NULL; else return p; }; void insereLista(struct stNo **list){ struct stNo *p,*q; int idade; char name[60],sex,end[60],city[40],cel[11],mail[60]; fflush(stdin); printf("\nDigite o nome: "); gets(name); fflush(stdin); printf("\nDigite a idade:"); scanf("%i",&idade); do{ printf ("\nDigite o sexo F/M:"); fflush(stdin); sex=getche(); sex=toupper(sex); }while(sex!='F' && sex!='M'); fflush(stdin); printf("\n\nDigite o endereco:"); fflush(stdin); gets(end); fflush(stdin); printf("\nDigite a cidade:"); gets(city); fflush(stdin); printf("\nDigite o celular:"); gets(cel); fflush(stdin); printf("\nDigite o email:"); gets(mail); if(*list==NULL){ p = cria_no(); *list = p; p->ant = NULL; p->pos = NULL; strcpy(p->nome,name); p->idade = idade; p->sexo = sex; strcpy(p->endereco,end); strcpy(p->cidade,city); strcpy(p->celular,cel); strcpy(p->email,mail); } else{ p=*list; while(p->pos!=NULL) p=p->pos; q = cria_no(); p->pos = q; q->pos = NULL; strcpy(q->nome,name); q->idade = idade; q->sexo = sex; strcpy(q->endereco,end); strcpy(q->cidade,city); strcpy(q->celular,cel); strcpy(q->email,mail); }; }; void insereListaInicio(struct stNo **list){ struct stNo *p,*q; int idade; char name[60],sex,end[60],city[40],cel[11],mail[60]; printf("\nLista Inicio\n"); fflush(stdin); printf("\nDigite o nome inicio: "); gets(name); fflush(stdin); printf("\nDigite a idade:"); scanf("%i",&idade); do{ printf ("\nDigite o sexo F/M:"); fflush(stdin); sex=getche(); sex=toupper(sex); }while(sex!='F' && sex!='M'); fflush(stdin); printf("\n\nDigite o endereco:"); fflush(stdin); gets(end); fflush(stdin); printf("\nDigite a cidade:"); gets(city); fflush(stdin); printf("\nDigite o celular:"); gets(cel); fflush(stdin); printf("\nDigite o email:"); gets(mail); if(*list==NULL){ p=cria_no(); *list=p; strcpy(p->nome,name); p->idade=idade; p->sexo=sex; strcpy(p->endereco,end); strcpy(p->cidade,city); strcpy(p->celular,cel); strcpy(p->email,mail); p->ant = NULL; p->pos = (*list); } else{ p=*list; q=cria_no(); strcpy(q->nome,name); q->idade=idade; q->sexo=sex; strcpy(q->endereco,end); strcpy(q->cidade,city); strcpy(q->celular,cel); strcpy(q->email,mail); q->pos = p; q->ant = NULL; (*list)=q; } }; void excluirListaInicio(struct stNo **list){ struct stNo *p,*q; char name[60]; printf("\nExcluir Inicio\n"); printf("\nDigite o primeiro nome da lista para ser excluido: "); fflush(stdin); gets(name); if(*list!=NULL){ p=*list; if(p->pos==NULL && strcmp(p->nome,name)==0){ free(p); *list=NULL; }else{ if(p->pos!=NULL && strcmp(p->nome,name)==0 ){ q=p->pos; q->ant=NULL; *list = q; free(p); } } }else{ printf("\nLista Vazia"); } }; void alterarLista(struct stNo **list){ struct stNo *p; char name[60]; printf("\nDigite o nome para pesquisar: "); fflush(stdin); gets(name); if(*list!=NULL){ p=*list; while(p->pos!=NULL && strcmp(p->nome,name)!=0) p=p->pos; if(strcmp(p->nome,name)==0){ fflush(stdin); printf("\nDigite o nome: "); gets(p->nome); fflush(stdin); printf("\nDigite a idade:"); scanf("%i",&p->idade); do{ printf ("\nDigite o sexo F/M:"); fflush(stdin); p->sexo=getche(); p->sexo=toupper(p->sexo); }while(p->sexo!='F' && p->sexo!='M'); fflush(stdin); printf("\n\nDigite o endereco:"); fflush(stdin); gets(p->endereco); fflush(stdin); printf("\nDigite a cidade:"); gets(p->cidade); fflush(stdin); printf("\nDigite o celular:"); gets(p->celular); fflush(stdin); printf("\nDigite o email:"); gets(p->email); printf("\nCadastro alterado!!!"); } } else printf("\nLista Vazia"); }; void mostraLista(struct stNo **list){ struct stNo *p; if(*list!=NULL){ p=*list; while(p->pos!=NULL){ printf("\nNome: %s",p->nome); p = p->pos; }; printf("\nNome: %s", p->nome); } else printf("\nLista Vazia"); }; void visualizarLista(struct stNo **list){ struct stNo *p; char name[60]; printf("\nDigite o nome: ");//procurar pelo nome fflush(stdin); gets(name); if(*list!=NULL){ p=*list; while(p->pos!=NULL&&(strcmp(p->nome,name)!=0)){ p = p->pos; }; if(strcmp(p->nome,name)==0){ printf("\nNome...: %s",p->nome); printf("\nIdade...: %d",p->idade); printf("\nSexo...: %c",p->sexo); printf("\nEndereco...: %s",p->endereco); printf("\nCidade...: %s",p->cidade); printf("\nCelular...: %s",p->celular); printf("\nEmail...: %s",p->email); }; } else printf("\nLista Vazia"); }; int main(){ setlocale(LC_ALL,"Portuguese"); struct stNo *lista; int menu; lista = NULL; do{ system("cls"); printf("\n"); mostraLista(&lista); printf("\n\n"); printf("\n1-Inserir Lista "); printf("\n2-Inserir Inicio "); printf("\n3-Visualizar "); printf("\n4-Alterar "); printf("\n5-Excluir Inicio "); printf("\n[6-Sair "); printf("\nOpção: "); scanf("%i",&menu); switch(menu){ case 1 : insereLista(&lista); break; case 2 : insereListaInicio(&lista); break; case 3 : visualizarLista(&lista); break; case 4 : alterarLista(&lista); break; case 5 : excluirListaInicio(&lista); break; case 6 : printf("\nSaindo..."); break; default: printf("\nCódigo Inválido"); } printf("\n");system("pause"); }while(menu!=6); return 0; };
Enviado em 07/12/2020 - 02:28h
Boa noite, prezado.Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar o VIM 9.1 no Debian 12
Como saber o range de um IP público?
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Slackpkg+ (Slackpkg Plus) está de volta!
Como dividir duas janelas igualmente e lado-a-lado na sua tela
Problemas com adaptadores wifi no Zorin (1)
Ocomon 6.0.1 - Problemas ao editar configurações estendidas (7)