Ir ao conteúdo
  • Cadastre-se

C++ Procurar múltiplos de um número 'x'


Posts recomendados

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");
}

 

  • Triste 1
Link para o comentário
Compartilhar em outros sites

@MarcoShadowbolt Em resposta à pergunta: quais valores são múltiplo de X? Se graficamente visualizasse a árvore buscaria cada um dos múltiplos de X ao arrastar os olhos por toda subárvore, ou filho esquerdo e direto; pegaria de cada filho/folha o seu valor para calcular o resto da divisão inteira por X com objetivo de saber se o resto da divisão é 0.

 

 

tree * buscar (...); é um procedimento quase igual que com pouquíssima adaptação é suficiente para exibir todas as ocorrências de múltiplos de X. A parte recursiva é muito importante, pois é a lógica pela qual todos os filhos/folhas são acessados.

 

Sugestão

void exibir_multiplos_de (int x, tree *na_arvore) {

    if (NULL == na_arvore) return;
	
   /** Aqui tem sua decisão com declaracao que
     *  escreve o valor SE multiplo de X
     */
  
    exibir_multiplos_de (x, na_arvore->dir);
    exibir_multiplos_de (x, na_arvore->esq);
  
    return;
}

 

Entendo assim, agora complete..

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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!