Jump to content
Fórum Script Brasil
  • 0

AJUDAAAA!


Lucati

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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;
}

Edited by bruce845
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...