Ir ao conteúdo
  • Cadastre-se

MarcoShadowbolt

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

  1. Boa noite, o problema que tinha antes foi resolvido, agora criou outro kkkk. Preciso da ajuda de vocês, como faço para encontrar os múltiplos de um número com recursividade que estão inseridos na árvore. O enunciado é esse: ''Considerando o mesmo programa que você desenvolveu em sala de aula, baseado em árvore binária, desenvolva agora uma nova funcionalidade que solicita ao usuário um número, e o programa apresenta se esse número (e todos os seus múltiplos) estão na árvore.'' Meu código está assim: struct trabalhop { int numero; struct trabalhop* dir; struct trabalhop* esq; }; typedef struct trabalhop tree; tree* cria_arvore_vazia() { return NULL; } tree* criar_arvore(int numero, tree* dir, tree* esq) { tree* arvore = (tree*) malloc(sizeof(tree)); arvore->numero = numero; arvore->dir = dir; arvore->esq = esq; return arvore; } tree* inserir(tree* arvore, int numero) { if(arvore==NULL) { arvore= criar_arvore(numero, NULL, NULL); }else if (numero < arvore->numero) { arvore->esq = inserir(arvore->esq, numero); }else { arvore->dir = inserir(arvore->dir, numero); } return arvore; } tree* buscar(tree* arvore, int numero) { if(arvore == NULL) { return NULL; } if(numero == arvore->numero) { return arvore; } if(numero > arvore->numero) { return buscar(arvore->dir, numero); }else { return buscar(arvore->esq, numero); } } int main() { int n, opcao; tree *arvore = cria_arvore_vazia(); tree *arvore_busca; do { printf("BEM VINDO AO MENU\n"); printf("\nESCOLHA UMA DAS opções:\n"); printf("\n1 - INSERIR"); printf("\n2 - BUSCAR POR NUMERO E SEUS MULTIPLOS."); printf("\n3 - BUSCAR NOS 'RAIZ' "); printf("\n4 - SAIR\n"); scanf("%i",&opcao); system("cls"); switch(opcao){ case 1: { printf("Insira um numero inteiro: "); scanf ("%i",&n); arvore = inserir(arvore, n); system("cls"); break; } case 2: { printf("Informe o numero que deseja buscar: "); scanf("%i", &n); arvore_busca = buscar(arvore, n); printf("\nNumero: %i\n", arvore_busca->numero); break; } case 3: { } case 4: { printf("Volte sempre!!\n"); exit(0); break; } default: { printf("Opcao invalida!!\n"); printf("Por favor digite uma opcao valida\n"); break; } } }while(opcao != 4); return 0; system("pause"); }
  2. Fala mlkada, de boa ? Preciso fazer uma Árvore Binária, e nela tenho que conseguir buscar um número, mas esse é problema que estou tendo, sempre que digito o número que desejo procurar trava o prompt, queria que dessem uma olhada. Eu também peguei na internet uma função de mostrar em ordem para ver se está sendo alocado, e está, mas depois de inserir vários números ou número inteiros maiores que 10 ele começa em um loop, alguém me dá uma força aí. Eu também preciso imprimir todos os nós do tipo ''raiz'', alguém sabe como ? Meu código está assim: #include <stdio.h> #include <stdlib.h> #include <string.h> struct numero{ int numero; struct numero* dir; struct numero* esq; }; typedef struct numero ninteiro; ninteiro* cria_arvore_vazia() { return NULL; } ninteiro* criar_arvore(int numero, ninteiro* dir, ninteiro* esq) { ninteiro* arvore = (ninteiro*) malloc(sizeof(ninteiro)); arvore->numero = numero; arvore->dir = NULL; arvore->esq = NULL; return arvore; } ninteiro* inserir(ninteiro* arvore, int numero) { if(arvore==NULL) { arvore= criar_arvore(numero, NULL, NULL); }else if(numero < arvore->numero) { arvore->esq=inserir(arvore->dir, numero); }else { arvore->dir=inserir(arvore->dir, numero); } return arvore; } ninteiro* buscar(ninteiro* arvore, int numero) { ninteiro* mostrar = NULL; if(arvore == NULL) { return NULL; } if(arvore->numero == numero) { mostrar = arvore; } if(numero < arvore->numero) { mostrar = buscar(arvore->esq, numero); } else { mostrar = buscar(arvore->dir, numero); } return mostrar; } void imprimirordem(ninteiro* arvore) { if(arvore != NULL) { imprimirordem(arvore->esq); printf("Numero: %i\n", arvore->numero); imprimirordem(arvore->dir); } } int main() { int numero; ninteiro *arvore = cria_arvore_vazia(); ninteiro *arvore_busca; int opcao = -5; do { printf("BEM VINDO AO MENU\n"); printf("\nESCOLHA UMA DAS opções A SEGUIR:\n\n"); printf("1 - INSERIR"); printf("\n2 - BUSCAR NUMERO."); printf("\n3 - TESTE IMPRIMIR"); printf("\n4 - SAIR\n"); scanf("%d",&opcao); system("cls"); switch(opcao) { case 1: { printf("Insira um numero inteiro.\n"); scanf ("%d",&numero); arvore=inserir(arvore, numero); break; } case 2: { printf("Informe o numero que deseja buscar: "); scanf("%d", numero); arvore_busca = buscar(arvore, numero); printf("\nNumero: %d\n",arvore_busca->numero); break; } case 3: { imprimirordem(arvore); break; } case 4: { printf("Obrigado pela preferência!! Volte sempre!!\n"); exit(0); break; } default: { printf("Opcao invalida!!\n"); printf("Por favor digite uma opcao valida\n"); break; } } } while(opcao != 4); return 0; system("pause"); }

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...