Lucati Postado Outubro 19, 2011 Denunciar Share Postado Outubro 19, 2011 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; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Outubro 20, 2011 Denunciar Share Postado Outubro 20, 2011 O que está dando errado? O que não está conseguindo fazer no menu, especificamente?Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bruce845 Postado Outubro 20, 2011 Denunciar Share Postado Outubro 20, 2011 (editado) 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 Outubro 20, 2011 por bruce845 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Lucati
GALERA não TO CONSEGUINDO FAZER O MENU!
alguém ME AJUDA ???
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
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.