Crear la funcion gotoxy(), en dev-c++ ... ejemplo sencillo.

Saliéndome un poco del tema de mis anteriores post, en esta ocasión les voy a enseñar un truco sencillo y fácil de aplicar a nuestros programas de C++. Como podrán haberse dado cuenta, en la mayoría de los compiladores actuales, especialmente los que son de software libre. No existe la función que en el antiguo compilador de BORLAND, llamábamos "gotoxy()", la razón por la cual no existe en la cabecera <Windows.h> la desconozco. Pero en esta ocasión les mostrare como crear desde nuestro compilador Dev- C++ , esa función "gotoxy()".

Pero , ¿Para que sirve gotoxy()? , Bueno sencillamente nos permite manipular la posición en la pantalla de lo que nuestra aplicación envié de salida, pueden ser caracteres, números, etc.

Ok, dicho esto ahora si vamos al ejemplo en C++:


 #include <stdio.h>  
 #include <windows.h>  
 void gotoxy(int x,int y){  
      HANDLE hcon;  
      hcon = GetStdHandle(STD_OUTPUT_HANDLE);  
      COORD dwPos;  
      dwPos.X = x;  
      dwPos.Y= y;  
      SetConsoleCursorPosition(hcon,dwPos);  
 }  
 int main(){  
      gotoxy(15,10);  
      printf("*");  
      return 0;  
 }  
Bien, aquí podemos ver que existe una función de tipo "void", ¿que significa eso?, significa que esta función cuyo nombre es "gotoxy", NO RETORNA ningún valor al terminar su ejecución, la razón es que en realidad solo deseamos que "haga" algo, no que nos "devuelva" algo.
Las instrucciones dentro de la función "gotoxy()" están definidas en la cabecera , no voy a entrar mucho en detalle puesto que ya profundizaremos mas adelante acerca de esto. Lo único que les puedo comentar, es que estamos utilizando un tipo genérico de "punteros"(ya los veremos próximamente) que lo que hacen es obtener primeramente, el control de nuestra ventana de salida, en este caso la consola de Windows, y además a partir de dos parámetros enteros ( x, y) asignarle una posición en forma de coordenada donde se imprimirán los datos de salida.
Por ultimo, como pueden ver en la función main(), solo hace falta llamar a la función que acabamos de crear ("gotoxy()")y alimentarla con los parámetros (x,y), para que esta pueda manipular la posición de salida que en este caso es un "*". Como ven es algo muy sencilla de aprender, espero les sirva. Pueden copiar el código y comprobar su funcionamiento, incluso cambiar de parámetros... Hasta la próxima. :)

Comentarios

  1. Gracias por la ayuda, veras que es bastante amable de tu parte explicar esto. Gracias.

    ResponderEliminar
  2. Gracias por la ayuda, veras que es bastante amable de tu parte explicar esto. Gracias.

    ResponderEliminar
  3. Gracias a todos por comentar y que bueno que les sirvió .. saludos!

    ResponderEliminar
  4. Porque me sale un error con las librerias conio.h y windows.h
    al usar el gotoxy ?

    ResponderEliminar
  5. Porque me sale un error con las librerias conio.h y windows.h
    al usar el gotoxy ?

    ResponderEliminar
  6. oye abre tus ojos mira hacia arriba disfruta las cosas buenas que tiene la vida lalalallalalala lalalala lalaalal lalala lala okno me podrias ayudar un poco mas es que casi no entendi

    ResponderEliminar
  7. Tengo un problema, en el ejercicio que lo quiero meter, me dice que [Error] 'gotoxy' was no declared in this scope, entonces copie tal cual este ejercicio y me sale lo mismo, ya puse todas la librerias que son stdio, conio, windows, stdlib, math, entre otras, todas con.h al final y nada, ayudaaaaaa, mi version de dev c++ es 5.11

    ResponderEliminar
    Respuestas
    1. depende, le pusiste la coordenadas correctamente?
      talves lo escribiste mal, o normalmente el error esta en la parte de arriba de donde te señala

      Eliminar
    2. No vi el código, quizás si lo viera diría donde está el error. Lo que te puede estar pasando es que definiste el procedimiento gotoxy después del main y no definiste el prototipo de la función

      Eliminar
  8. muchas gracias impecable el aporte!!!

    ResponderEliminar
  9. hola disculpen una duda
    corro ese programa pero solo baja filas no recorre las columnas
    solo baja
    alguien podria decirme x que

    ResponderEliminar
    Respuestas
    1. puede que hayas confundido las columnas con los renglones... ej:
      gotoxy(columnas,renglones);
      printf("lo que quieras");
      return 0;

      Eliminar
  10. Preferiría usar printf, sería más compatible con los demás sistemas

    ResponderEliminar
  11. Esta muy buena la funcion a mi me funciono, pero necesito saber las coordenadas para poder llenar x, no se si hay alguna forma de saber las coordenadas de lo que es el compilador o alguna forma que lo muestre espero alguien me ayude

    ResponderEliminar
  12. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  13. excelente para codeblocks!!,gracias

    ResponderEliminar
  14. disculpa amigo me podrias audar con este ejercicio.
    Crear una función llamada "rotulo", que tome como parámetro una cadena de texto, no devuelva ningún valor, y
    escriba en pantalla ese texto centrado (suponiendo una anchura de pantalla de 80 letras) y en la línea siguiente
    escriba guiones para que el rótulo parezca subrayado (tantos guiones como letras formen la palabra).

    ResponderEliminar
    Respuestas
    1. void rotulo(char *r){
      int lon = strlen(r);
      gotoxy(30,12);
      cout << r << endl;
      gotoxy(30,13);
      for(int i = 0; i<lon; i++){
      cout << "*";
      }
      }

      int main (){

      char r [1024];
      cout << "Introduce la frase: "<< endl;
      cin.get(r, 200);

      rotulo(r);
      }

      Eliminar
  15. Quisiera saber si hay una forma de que solo tome un valor x puesto que el código que tengo es una lista de estudiantes donde se le hará modificaciones cuantas sea hasta que el usuario desee terminar por lo que no se cuales son las coordenadas y, y hacer un contador seria algo tedioso en el código que tengo.

    Muchas gracias

    ResponderEliminar
  16. Eres el mejor gracias me ayudo mucho para mi programa!!!

    ResponderEliminar
  17. se que hac emucho nade contesta, pero no perdo nada con preguntar. use tu funcion pero me arroa este error

    collect2.exe [Error] ld returned 1 exit status

    y no se que hacer

    ResponderEliminar
    Respuestas
    1. Amigo, es tu antivirus. Desactívalo al momento de usar Dev C++. A mí me funcionó perfectamente, e igual, me mortifiqué buscando en las librerías, sin éxito. Así que, inténtalo.
      PD: Espero que aún no hayas terminado tu semestre y te sirva. XD

      Eliminar
  18. Intento usa este codigo en una App de android que se llama CxxDroid y me arroja el siguiente error: " '' file not found" ¿Alguna sugerencia para solucionar el problema?

    ResponderEliminar
  19. #include
    #include
    #include //usaremos la biblioteca

    //podemos nombrar las variables "x" y "y" como queramos

    // X Y
    void gotoxy(int gato,int perro){

    //podemos nombrar las variables HANDLE y COORD como queramos
    HANDLE taquito;
    taquito = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD ayuwoki;

    /*podemos colocar cualquier nombre por ejemplo "ayuwoki" lo que si es
    obligatorio es que siempre debe terminar en ".X" o ".Y" respectivamente */

    ayuwoki.X = gato; //Declaramos gato como X
    ayuwoki.Y= perro; //Declaramos perro como Y
    SetConsoleCursorPosition(taquito, ayuwoki);
    }
    void main(){
    /* NOTAS:________________________________________________________________________
    Antes de cada (printf) debemos colocar la funcion gotoxy para indicar la pocicionde imprecion
    de la palabra, en este caso la coordenada X no cambia mientras que la coordenada Y se dirige
    hacia abajo de la pantalla.

    Si colocamos numeros negativos, estos siempre tendran un valor de 0 en a la hora de compilar.

    Si colocamos dos (printf) en la misma pocición, el programa solo compilara el primero.

    si colocamos una palabra muy grande y en una pocicion y colocamos mas palabras en pociciones
    cercanas a esta, las palabras posteriores se sobre pondran sobre la primera palabra.
    EJEMPLO
    cambien la "H" por la palabra "hola" sin quitar los demas (printf), cuando compile usted podra
    ver que en lugar de imprimir "H O L A", este imprimira "hoOaL A" siendo que la letra "O" se
    sobrepuso en la letra "l" de la palabra "hola"
    */
    gotoxy(1,0);
    printf("hola");

    gotoxy(3,0);
    printf("O");

    gotoxy(5,0);
    printf("L");

    gotoxy(7,0);
    printf("A");

    printf("\n\n");
    system("pause");
    }

    ResponderEliminar
  20. doouuuuu aca desde la sala de info de thomas

    ResponderEliminar
  21. idm crack for pc is a free and open source application that can help you manage your projects and other things that is well known for its good usability, and above all its price, totally free.

    ResponderEliminar
  22. Funcionó correctamente, Gracias por la apotación,

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Ejercicio de C++, ejemplo: promedio de un Alumno y la sentencia IF

Ejercicio de C++ Area de una Circunferencia, tipos de variables y la sentencia "Return"