Ir ao conteúdo
  • Cadastre-se

Sakomura

Membro Pleno
  • Posts

    27
  • Cadastrado em

  • Última visita

Reputação

3
  1. Eu substitui o aux lá na função , agora ele incrementa certim , mas não consigo imprimir os nodos. Mas a função de Pesquisa , você acha que está correta? Não sei se ele analisa direito usando o strcmp... Quando eu tento imprimir o nodo , ele imprimi somente um nodo. Se eu aperto de novo pra imprimir , ele imprimi 2 vezes o mesmo nodo... Lembrando que ele vai imprimir o nodo que tem a menor PLACA... Cara , você é o único que está me ajudando ahuahua. Em último caso , não abusando da sua boa vontade , seria pedir muito pra você olhar o meu código? Eu te mandaria o arquivo e tal e você tentaria ver se tu acha algo de errado. É um trabalho de faculdade , por isso que estou desesperado kkkk. Agradeço mais uma vez a atenção!
  2. Obrigado Mauro por responder. Da uma olhada nas minhas funções: Modifiquei a função exibeAVL , agora eu passo um nodo e ela imprime só aquele nodo. Mas não obtive sucesso. Será que a a função emOrdem (preenche vetor com as placa) e a de Pesquisa (que retorna um nodo) estão certas? To tentando de tudo e não sei mais o que fazer =/ case 3: vet = (char**) malloc (sizeof(char*)*qtd); for (i = 0; i < qtd ; i++) vet[i] = (char*) malloc (sizeof(char)*10); emOrdem(avl , vet , 0, qtd); ordenaVetor(vet , qtd); //imprimeVetor(vet, qtd); for(aux=0; aux < qtd; aux++){ nodo = Pesquisa_ABP(avl, vet, 0); exibeAVL(nodo); }FUNÇões:AVL *Pesquisa_ABP (AVL *avl, char vet[][10], int ps){ if (avl == NULL) return NULL; if(strcmp(avl->reg.Info.placa, vet[ps]) == 0) return avl; else if (strcmp(avl->reg.Info.placa, vet[ps]) > 0) return Pesquisa_ABP(avl->Esq, vet , ps); else if (strcmp(avl->reg.Info.placa , vet[ps]) < 0) return Pesquisa_ABP(avl->Dir, vet , ps);}void exibeAVL (AVL *avl){ if (avl == NULL) return; printf("Placa: %s\n",avl->reg.Info.placa); printf("Chassi: %s\n",avl->reg.Info.chassi); printf("Marca: %s\n",avl->reg.Info.marca); printf("Modelo: %s\n",avl->reg.Info.modelo); printf("Quantidade de portas: %d\n",avl->reg.Info.portas); printf("Nome proprietario: %s\n",avl->reg.Info.proprietario); printf("Cpf: %s\n",avl->reg.Info.cpf_proprietario); printf("Telefone proprietario: %s\n",avl->reg.Info.telefone); printf("=========================\n");}void emOrdem (AVL *avl , char vet[][10], int i,int qtd){ if (avl != NULL){ strcpy(vet[i],avl->reg.Info.placa); //vet[i] = avl->reg.Chave; if( i == qtd ) return; emOrdem(avl->Esq, vet , i+1 , qtd); emOrdem(avl->Dir, vet , i+1, qtd); }} \\ preenche o vetor com placas.
  3. Olá pessoal , tudo bem? É o seguinte nao to conseguindo imprimir os nodos da árvore quando eu comparo os campos da árvore com um vetor de Strings. Segue o código abaixo: void exibeAVL (AVL *avl, char vet[][10] , int i , int qtd){ if (avl == NULL) return; if (strcmpi(avl->reg.Info.placa, vet[i]) == 0){ printf("Placa: %s\n",avl->reg.Info.placa); printf("Chassi: %s\n",avl->reg.Info.chassi); printf("Marca: %s\n",avl->reg.Info.marca); printf("Modelo: %s\n",avl->reg.Info.modelo); printf("Quantidade de portas: %d\n",avl->reg.Info.portas); printf("Nome proprietario: %s\n",avl->reg.Info.proprietario); printf("Cpf: %s\n",avl->reg.Info.cpf_proprietario); printf("Telefone proprietario: %s\n",avl->reg.Info.telefone); printf("=========================\n"); i++; } //if (i == qtd) // return; exibeAVL(avl->Esq , vet , i , qtd); exibeAVL(avl->Dir, vet , i , qtd);} A ideia é comparar a placa do carro do vetor de strings com o campo do nodo da árvore e se for igual , imprime o resto dos dados. Só que eu só consigo imprimir um nodo só e tem hora que eu nem consigo imprimir nada. É certeza que fiz besteira , mas nao to conseguindo visualizar.. Como eu comparo os valores do nodo da árvore com um vetor ou uma matriz (vetor de strings)? Tenho duvida em relação a como incrementar o contador. Agradeço a atenção!

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!