alphasil Posted July 8, 2012 at 02:56 PM Report Share #467899 Posted July 8, 2012 at 02:56 PM (edited) Olá Tenho de modificar um numero de telefone após uma pesquisa, ou seja, depois de validar nome e numero de telefone, tenho de alterar o telefone void pesquisa(char *nome, int t) { int x; struct clientes *aux; int flag=0; aux=Primeiro->Prox; while(aux !=NULL) { if ((strcmp(aux->nome, nome) == 0) || (aux->tel == t)) { printf("Encontrado..."); printf("Insira novo numero: \n"); scanf("%d", &x); aux->tel=x; aux=NULL; flag=1; } else aux=aux->Prox; } if(!flag) printf("\nNada encontrado com esses dados na lista!!!"); } Edited July 8, 2012 at 02:58 PM by alphasil gmc11 Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 8, 2012 at 05:45 PM Report Share #467927 Posted July 8, 2012 at 05:45 PM qual é a dúvida ?? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
alphasil Posted July 8, 2012 at 05:50 PM Author Report Share #467930 Posted July 8, 2012 at 05:50 PM Oi HHH A dúvida é saber se aquele código está certo Ou seja, se depois de entrar naquela condição e passar, se aquilo que lá está faz o update. cumps gmc11 Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 8, 2012 at 05:56 PM Report Share #467933 Posted July 8, 2012 at 05:56 PM parece ter 2 erros e 1 ponto de implementação que detesto : aux=Primeiro->Prox; só posso presumir que Primeiro é uma variável global, espero que deixes de usar este tipo de implementação muito recentemente. aux=Primeiro->Prox; isto parece que começas a fazer a pesquisa no segundo elemento da lista if ((strcmp(aux->nome, nome) == 0) || (aux->tel == t)) isto, em conjunto com o que referiste no teu post anterior: Tenho de modificar um numero de telefone após uma pesquisa, ou seja, depois de validar nome e numero de telefone, tenho de alterar o telefone dizes que tanto o nome e o número de telefone são validados, no entanto no teu código basta um ser igual, ditado pelo operador || (ou) IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
alphasil Posted July 8, 2012 at 07:47 PM Author Report Share #467962 Posted July 8, 2012 at 07:47 PM Oi HHH Sim, o exercício pedia variaveis globais, Primeiro e Ultimo Primeiro é o 1º elemento da lista Proximo é o próximo elemento da lista que está dentro da struct Tens razão || é ou e eu quero validar os 2 por isso deveria ser && A questão é se depois de validar esses dados se alterar somente os dados de tel, vai assumir para aquele elemento o novo numero. gmc11 Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 9, 2012 at 08:49 AM Report Share #467995 Posted July 9, 2012 at 08:49 AM (edited) 1º - como te disse, estás a começar a pesquisa pelo segundo elemento porque estás a atribuir "Primeiro->Prox" à variável "aux" deverás atribuir somente "Primeiro" 2º - o elemento apontado por "aux" será alterado. 3º - existem muitas simplificações, na realidade, tu é que complicaste um bocada: void pesquisa(char *nome, int t) { // int x; <--------- Isto nao serve para nada struct clientes *aux; // int flag=0; <---------------Isto nao serve para nada // aux=Primeiro->Prox; <---------Estas a ignorar o primeiro elemento da lista aux=Primeiro; while(aux !=NULL) { // if ((strcmp(aux->nome, nome) == 0) || (aux->tel == t)) if ((strcmp(aux->nome, nome) == 0) && (aux->tel == t)) { printf("Encontrado..."); printf("Insira novo numero: \n"); scanf("%d", &(aux->tel)); // <------ ler diretamente para o elemento da lista // aux->tel=x; <--------- Isto nao serve para nada // aux=NULL; <--------- Isto nao serve para nada // flag=1; <--------- Isto nao serve para nada return; // <-----Termina a execucao da funcao } else aux=aux->Prox; } // if(!flag) <--------- Isto nao serve para nada printf("\nNada encontrado com esses dados na lista!!!"); } Edited July 9, 2012 at 08:49 AM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now