Jefinho Postado Novembro 19, 2008 Denunciar Share Postado Novembro 19, 2008 tou com problema no meu codigona função listarPorNivelele deve listar os elementos no nivel determinado pelo usuarioporem quando peço para listar no nivel 1ele não lista nadano nivel 2 ele lista o elemento do nivel 1no nivel 3 ele lista os elementos do nivel 2 e assim por diantejá mudei de toda forma mas não consegui conserta issoajuda ai pessoal#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> typedef struct NO{ int n; char chave[20]; struct NO *esq,*dir; struct NO *proxcor; struct NO *proxcidade; struct NO *proxmodelo; struct NO *volta; }no; void inicializar(no **celula) { (*celula)->proxcor =NULL; (*celula)->proxcidade = NULL; (*celula)->proxmodelo=NULL; (*celula)->esq=NULL; (*celula)->dir=NULL; (*celula)->volta =NULL; } // PROCEDIMENTO PARA AUXILIAR O INSERIR void inserirno(char informacao[20],no **celula) { if (*celula ==NULL) { *celula =(no*)malloc(sizeof(no)); strcpy((*celula)->chave,informacao); (*celula)->esq =NULL; (*celula)->dir =NULL; return; } if(strcmp(informacao,(*celula)->chave)<0){ inserirno(informacao,&(*celula)->esq); return; } if(strcmp(informacao,(*celula)->chave)>0){ inserirno(informacao,&(*celula)->dir); } } //PROCEDIMENTO PARA INSERIR void inserir(no **celula) { int v, i; char informacao[20]; printf("quantos cadastro deseja fazer? "); scanf("%d",&v); for (i=0;i<v;i++) { printf("entrada: "); scanf("%s",&informacao[0]); inserirno(informacao,&(*celula)); } } // PROCEDIMENTO PARA LISTAR EM ORDEM void em_ordem ( no **mod) { if (*mod) { em_ordem (&(*mod)->esq); printf ("%s\n",(*mod)->chave); em_ordem (&(*mod)->dir); } } // PROCEDIMENTO PARA LISTAGEM POR NIVEL void listarpornivel(no **celula,int nivel) { printf("ok"); if ((nivel == 1) && (*celula !=NULL)) { printf("ok"); printf("%s\n",(*celula)->chave); } else { if ((*celula) ->esq != NULL) { listarpornivel(&(*celula)->esq ,nivel-1); } if ((*celula)->dir != NULL) { listarpornivel(&(*celula)->dir ,nivel - 1); } } } // FUNÇÃO PRINCIPAL int main() { char opcao ,informacao[20]; no *mod,*c,*cid; int nivel; //PARA INSERIR MODELO mod = (no*)malloc(sizeof(struct NO)); inicializar(&mod); inserir(&mod); //PARA INSERIR COR c = (no*)malloc(sizeof(struct NO)); inicializar(&c); inserir(&c); //PARA INSERIR CIDADE cid = (no*)malloc(sizeof(struct NO)); inicializar(&cid); inserir(&cid); printf("nivel"); scanf("%d",&nivel); listarpornivel(&mod,nivel); opcao ='o'; while (opcao != 'e') { scanf("%s%s",&opcao,&informacao[0]); if ((opcao == 'p') && (informacao[0] == 'm')) { em_ordem(&mod); } if ((opcao =='p') && (informacao[0] =='c' )) { em_ordem(&c); } if ((opcao == 'p') && (informacao[0] =='t')) { em_ordem(&cid); } } return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Jefinho
tou com problema no meu codigo
na função listarPorNivel
ele deve listar os elementos no nivel determinado pelo usuario
porem quando peço para listar no nivel 1
ele não lista nada
no nivel 2 ele lista o elemento do nivel 1
no nivel 3 ele lista os elementos do nivel 2 e assim por diante
já mudei de toda forma mas não consegui conserta isso
ajuda ai pessoal
Link para o comentário
Compartilhar em outros sites
0 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.