Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Beginner Web en 21 Octubre 2018, 20:35 pm



Título: funcion gotoxy
Publicado por: Beginner Web en 21 Octubre 2018, 20:35 pm
Hola miren estoy buscando la manera de mostrar el contenido de un arbol binario de busqueda de forma muy grafica por pantalla es decir de esta manera

                RAIZ
       12                  33
   6      15          51
       14   19

Tengo estos metodos pero a la hora de imprimir por pantalla se me superpone el mensaje
"Presione una tecla para continuar...." y no me gusta


Código
  1. void mostrar(pnodo arbol, int Y)
  2. {
  3. if(arbol!=NULL){
  4. X+=5;
  5. mostrar(arbol->izq,Y+2);
  6. gotoxy(10+X-Y,15+Y);
  7. cout<<arbol->dato<<endl;
  8. mostrar(arbol->der,Y+2);
  9. }
  10. }
  11.  
  12. void gotoxy(int x, int y)
  13. {
  14. HANDLE hcon;
  15. hcon=GetStdHandle(STD_OUTPUT_HANDLE);
  16.  
  17. COORD pos;
  18. pos.X=x;
  19. pos.Y=y;
  20. SetConsoleCursorPosition(hcon,pos);
  21. }
Desde ya muchas gracias  ;-)


Título: Re: funcion gotoxy
Publicado por: MAFUS en 21 Octubre 2018, 21:10 pm
Antes de que aparezca el mensaje mueve el cursor de la pantalla donde quieras. No sé si va a funcionar. Inténtalo.


Título: Re: funcion gotoxy
Publicado por: Beginner Web en 21 Octubre 2018, 21:24 pm
Si pero no me lo muestra en un lugar fijo :(


Título: Re: funcion gotoxy
Publicado por: huchoko en 21 Octubre 2018, 22:29 pm
Bueno, en tu código no hay ninguna llamada a system("pause")
Estas compilando desde el IDE? Si es así, por eso te aparece el mensaje de Presione un tecla...
Pero si lo ejecutas desde la terminal no aparecerá.
Y una recomendación:
Código
  1. if(arbol == NULL){
  2. return;
  3. }
  4. X += 5;
  5. mostrar(arbol-> izq, Y + 2);
  6. gotoxy(10 + X - Y, 15 + Y);
  7. cout << arbol -> dato << endl;
  8. mostrar(arbol -> der, Y + 2);
  9.  
No aglutines los operadores con lo demás, hace que el código sea mas difícil de leer, y se ve feo...
Saludos
y respondiendo eso de que el mensaje ese no se queda en un lugar fijo es por que el mensaje se imprime en el ultimo lugar dónde posicionaste el cursor con gotoxy