Ir para conteúdo
Fórum Script Brasil
  • 0

Procurar por codigo repetido em uma struct lista


Licenciatura Computacao

Pergunta

Boa tarde.

Gente to construindo uma trabalho para a faculdade e estou com o seguinte problema.

fiz um while para verificar se o há algum codigo repetido na lista. ok ta funcionando mas quando digito um numero que no caso não e repetido o programa da erro.

alguém pode dar uma ajuda.

segue a funcao adicionar.

void adicionar() {
   ptrnovo=(struct prs*) malloc(sizeof(struct prs));
   digitar();
   int cont=1;
   char codl[30];

   if (ptrprim==(struct prs*)NULL)//testa se a lista esta vazia
   { ptrprim=ptrant=ptratual=ptrnovo;
     ptratual -> ptrprox=(struct prs*) NULL; n++; 
     printf("\nInformacoes  armazenadas com sucesso!!!");
   }

  else {  //não é o primeiro codigo
       
       // codl é quem recebe o codigo//
       
    while(strcmp(ptratual->codl, ptrnovo -> codl)!=0){
          ptrant=ptratual; ptratual=ptratual->ptrprox;
            if(cont==n) break; cont++;} 
     if (strcmp(ptratual->codl, ptrnovo -> codl)==0)
     printf("\nCodigo de Livro já cadastrado.\n");
     
          
     if(cont==n+1){
     
     int a=0,b=0,ordem=0,cont,i;
     ptratual=ptrprim;
     while(ordem==0) { //enquanto estiver fora de ordem

       cont=0; i=0; //reinicia os contadores
       while(cont==0)  {
     a=ptrnovo->codl[i]; b=ptratual->codl[i]; //alterei aqui 19-11 as 15:19
     if(a-b==0) i++;
     else cont=1; } //fim do while 2

       if(cont==1) {
     a=ptrnovo->codl[i]; b=ptratual->codl[i];
     if(a>b) {
       if(ptratual->ptrprox==(struct prs *)NULL) {
         ptrnovo->ptrprox=(struct prs *)NULL; ptratual->ptrprox=ptrnovo; ordem=1; n++;}
       ptrant=ptratual;  ptratual=ptratual->ptrprox; }
     if(a<b) {
       if(ptratual==ptrprim) {ptrnovo->ptrprox=ptrprim; ptrprim=ptrnovo;}
       else { if(ptratual->ptrprox==(struct prs *)NULL){
            ptrnovo->ptrprox=ptrant->ptrprox; ptrant->ptrprox=ptrnovo;}
          else  {ptrnovo->ptrprox=ptratual;  ptrant->ptrprox=ptrnovo;}}
         /*fim if */
       ordem=1; n++;}/*fim do else */
       }//fim do if
       else ptratual=ptratual->ptrprox; } //fim do while 1
     printf("\nInformacoes  armazenadas com sucesso!!!");
    } //fim do else
  
  }
   getch(); } //fim da fun‡ao

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Olá

Desculpe a demora em responder. O código é complexo, não é fácil identificar o erro. Imagino que seria útil você postar o erro para nós.

Mas uma coisa me chamou a atenção. Há algumas chamadas como a seguinte:

if(ptratual->ptrprox==(struct prs *)NULL)

Esta estrutura ponteiro->outro_ponteiro não me é familiar. Esta sintaxe está correta?

Abraços

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...