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

AJUDAAAA!


Lucati

Pergunta

GALERA não TO CONSEGUINDO FAZER O MENU!

alguém ME AJUDA ???

#include<stdlib.h>
#include<stdio.h>

typedef struct No{
    int numero;
    struct No *pEsquerda;
    struct No *pDireita;
}No;

//FUNÇÃO INICIAR
void criarArvore(No **pRaiz){
    *pRaiz = NULL;
}

//FUNÇÃO DE INSERÇÃO

void inserir(No **pRaiz, int numero){
    if(*pRaiz == NULL){
        *pRaiz = (No *) malloc(sizeof(No));
        (*pRaiz)->pEsquerda = NULL;
        (*pRaiz)->pDireita = NULL;
        (*pRaiz)->numero = numero;
    }else{
        if(numero < (*pRaiz)->numero)
            inserir(&(*pRaiz)->pEsquerda, numero);
        if(numero > (*pRaiz)->numero)
            inserir(&(*pRaiz)->pDireita, numero);
    }
}

//FUNÇÃO DE REMOVER

void remover(No **pRaiz, int numero){
    No *pAux = NULL;
    if(numero < (*pRaiz)->numero)
        remover(&(*pRaiz)->pEsquerda, numero);
    else if (numero > (*pRaiz)->numero)
        remover(&(*pRaiz)->pDireita, numero);
    else{
        pAux = *pRaiz;
        if((*pRaiz)->pEsquerda == NULL)
            *pRaiz = (*pRaiz)->pDireita;
        else if((*pRaiz)->pDireita == NULL)
            *pRaiz = (*pRaiz)->pEsquerda;
        else{
            noMaior(&(*pRaiz)->pEsquerda);
            (*pRaiz)->numero = pAux->numero;
        }
    }
}

//FUNÇÃO EXIBIR EM ORDEM

void exibirEmOrdem(No *pRaiz){
    if(pRaiz != NULL){
        exibirEmOrdem(pRaiz->pEsquerda);
        printf("\n%i", pRaiz->numero);
        exibirEmOrdem(pRaiz->pDireita);
    }
}


//FUNÇÃO EXIBIR PRÉ-ORDEM

void exibirPreOrdem(No *pRaiz){
    if(pRaiz != NULL){
        printf("\n%i", pRaiz->numero);
        exibirPreOrdem(pRaiz->pEsquerda);
        exibirPreOrdem(pRaiz->pDireita);
    }
}

//FUNÇÃO EXIBIR PÓS ORDEM

void exibirPosOrdem(No *pRaiz){
    if(pRaiz != NULL){
        exibirPosOrdem(pRaiz->pEsquerda);
        exibirPosOrdem(pRaiz->pDireita);
        printf("\n%i", pRaiz->numero);
    }
}

//FUNÇÃO CONTAR NÓS

int contarNos(No *pRaiz){
   if(pRaiz == NULL)
        return 0;
   else
        return 1 + contarNos(pRaiz->pEsquerda) + contarNos(pRaiz->pDireita);
}

//FUNÇÃO CONTAR FOLHAS

int contarFolhas(No *pRaiz){
   if(pRaiz == NULL)
        return 0;
   if(pRaiz->pEsquerda == NULL && pRaiz->pDireita == NULL)
        return 1;
   return 0 + contarFolhas(pRaiz->pEsquerda) + contarFolhas(pRaiz->pDireita);
}

void Menu(void){
   printf("\n************ ARVORE BINARIA ****************\n\n");
   printf("\n   [1] - INSERIR ELEMENTOS\n");
   printf("\n   [2] - EXCLUIR ELEMENTOS\n");
   printf("\n   [3] - IMPRIMIR ARVORE EM ORDEM\n");
   printf("\n   [4] - IMPRIMIR ARVORE PRE-ORDEM\n");
   printf("\n   [5] - IMPRIMIR ARVORE POS-ORDEM\n");
   printf("\n   [6] - IMPRIMIR QUANTIDADE DE NOS\n");
   printf("\n   [7] - IMPRIMIR QUANTIDADE DE FOLHAS\n");
   printf("\n   [0] - SAIR");
   printf("\n\nDIGITE A OPCAO DESEJADA: ");
}


int main(void){
   char Op;

   do{
      Menu();
      Op = toupper(getche());
      switch(Op)
      {
         case '1':
            inserir();
            break;
         case '2':
            remover()();
            break;
         case '3':
            exibirEmOrdem();
            break;
         case '4':
            exibirPosOrdem();
            break;

         case '5':
            exibirPreOrdem();
            break;

         case '6':
            contarNos();
            break;

         case '5':
            contarFolhas();
            break;
      }
   }
   while(Op != '0');

   return 0;
}

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Bem, você está querendo acionar as funções que você criou sem mandar parâmetro nenhum na hora de chamar a função!

Qual parâmetro você quer mandar para as funções.

Na hora de postar o seu código, use a BBCode code para sair com a identação!

Ex.:

[code]código[code]
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <ctype.h>

typedef struct No
{
  int numero;
  struct No *pEsquerda;
  struct No *pDireita;
}No;

void criarArvore(No **pRaiz)
{
*pRaiz = NULL;
}


void inserir(No **pRaiz, int numero)
{
  if(*pRaiz == NULL)
  {
    *pRaiz = (No *) malloc(sizeof(No));
    (*pRaiz)->pEsquerda = NULL;
    (*pRaiz)->pDireita = NULL;
    (*pRaiz)->numero = numero;
  }
  else
  {
    if(numero < (*pRaiz)->numero)
      inserir(&(*pRaiz)->pEsquerda, numero);
    if(numero > (*pRaiz)->numero)
      inserir(&(*pRaiz)->pDireita, numero);
  }
}

void remover(No **pRaiz, int numero)
{
  No *pAux = NULL;
  if(numero < (*pRaiz)->numero)
    remover(&(*pRaiz)->pEsquerda, numero);
  else if (numero > (*pRaiz)->numero)
    remover(&(*pRaiz)->pDireita, numero);
  else
  {
    pAux = *pRaiz;
    if((*pRaiz)->pEsquerda == NULL)
      *pRaiz = (*pRaiz)->pDireita;
    else if((*pRaiz)->pDireita == NULL)
      *pRaiz = (*pRaiz)->pEsquerda;
    else
    {
      noMaior(&(*pRaiz)->pEsquerda);
      (*pRaiz)->numero = pAux->numero;
    }
  }
}

void exibirEmOrdem(No *pRaiz)
{
  if(pRaiz != NULL)
  {
    exibirEmOrdem(pRaiz->pEsquerda);
    printf("\n%i", pRaiz->numero);
    exibirEmOrdem(pRaiz->pDireita);
  }
}

void exibirPreOrdem(No *pRaiz)
{
  if(pRaiz != NULL)
  {
    printf("\n%i", pRaiz->numero);
    exibirPreOrdem(pRaiz->pEsquerda);
    exibirPreOrdem(pRaiz->pDireita);
  }
}

void exibirPosOrdem(No *pRaiz)
{
  if(pRaiz != NULL)
  {
    exibirPosOrdem(pRaiz->pEsquerda);
    exibirPosOrdem(pRaiz->pDireita);
    printf("\n%i", pRaiz->numero);
  }
}

int contarNos(No *pRaiz)
{
  if(pRaiz == NULL)
    return 0;
  else
  return 1 + contarNos(pRaiz->pEsquerda) + contarNos(pRaiz->pDireita);
}

//FUNÇÃO CONTAR FOLHAS

int contarFolhas(No *pRaiz)
{
  if(pRaiz == NULL)
    return 0;
  if(pRaiz->pEsquerda == NULL && pRaiz->pDireita == NULL)
    return 1;
  return 0 + contarFolhas(pRaiz->pEsquerda) + contarFolhas(pRaiz->pDireita);
}

void Menu(void)
{
  printf("\n************ ARVORE BINARIA ****************\n\n");
  printf("\n [1] - INSERIR ELEMENTOS\n");
  printf("\n [2] - EXCLUIR ELEMENTOS\n");
  printf("\n [3] - IMPRIMIR ARVORE EM ORDEM\n");
  printf("\n [4] - IMPRIMIR ARVORE PRE-ORDEM\n");
  printf("\n [5] - IMPRIMIR ARVORE POS-ORDEM\n");
  printf("\n [6] - IMPRIMIR QUANTIDADE DE NOS\n");
  printf("\n [7] - IMPRIMIR QUANTIDADE DE FOLHAS\n");
  printf("\n [0] - SAIR");
  printf("\n\nDIGITE A OPCAO DESEJADA: ");
}


int main(void)
{
  char Op;
  do
  {
    Menu();
    Op = toupper(getche());
    switch(Op)
    {
      case '1':inserir();
               break;
      case '2':remover(); // O remover estava com 2 parênteses!
               break;
      case '3':exibirEmOrdem();
               break;
      case '4':exibirPosOrdem();
               break;
      case '5':exibirPreOrdem();
               break;
      case '6':contarNos();
               break;
      case '7':contarFolhas(); // O caso 5 estava repetindo!
               break;
    }
  }
  while(Op != '0');
  return 0;
}

Editado por bruce845
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...