Ayuda con graphics.h

Temas sobre programacion en C/C++ (no Visual C++)

Moderador:ivancp

Avatar de Usuario
Dtc
Novato
Novato
Mensajes:3
Registrado:Jue Abr 28, 2011 4:09 pm
Ayuda con graphics.h

Mensaje por Dtc » Jue Abr 28, 2011 4:21 pm

Saludos. He estado leyendo algunos temas aquí desde hace algún tiempo y me gustaría compartir un problema que tengo, esperando que a alguien ya le haya pasado y sepa la solución.

Ando manejando un programa que grafica unos datos que anteriormente el mismo programa calcula, por lo que he estado utilizando graphics.h, aunque me ha aparecido un problema.
Le paso a la función los parámetros necesarios para trazar la gráfica y lo hace correctamente, pero el problema viene al intentar continuar con el programa, ya que al intentar regresar al modo consola y salir del modo de vídeo, me aparece una pantalla negra con un _ parpadeando y ya no puedo salir de esa pantalla completa y continuar con el proceso de forma normal, y solo sale de esa pantalla cuando salgo del programa.
Por ejemplo, con este código:

[codex=c]#include<graphics.h>
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>

void grafico(void);
void hacergrafico1(float dominio1, float dominio2, float rango1, float rango2);
float chale, nel, cor, jor;

main()
{
chale=-2;
nel=4;
cor=-3;
jor=3;
printf("presiona algo para seguirle");
getchar();
delay(300);
hacergrafico1(chale, nel, cor, jor);
printf("final");
getchar();
}

void grafico()
{
int drive=DETECT,a,error;
initgraph(&drive,&a,"C:\\BC5\\BGI");
error=graphresult();
if (error != grOk)
{
printf ("Error al cargar modo grafico");
printf ("\nPresione una tecla para continuar");
system("pause");
exit(1);
}
}

void hacergrafico1(float dominio1, float dominio2, float rango1, float rango2)
{

/*Convirtiendo los numeros de deminio y rango a pixeles y guardandolos en las variables para graficar*/
int x1, y1, x2, y2;
x1=dominio1*10+200;
y1=rango1*-10+200;
x2=dominio2*10+200;
y2=rango2*-10+200;
delay(200);
/*Se dibuja el plano cartesiano graduado*/
/*Se invoca al modo gráfico */
grafico();
delay(200);
/*Dibuja las 2 lineas del plano y el punto central*/
line(200,0,200,400);
line(0,200,400,200);
putpixel(200,200,0);
/*Dibuja la graduación de la linea derecha*/
line(210,200,210,203);
line(220,200,220,203);
line(230,200,230,203);
line(240,200,240,203);
line(250,200,250,203);
line(260,200,260,203);
line(270,200,270,203);
line(280,200,280,203);
line(290,200,290,203);
line(300,200,300,203);
line(310,200,310,203);
line(320,200,320,203);
line(330,200,330,203);
line(340,200,340,203);
line(350,200,350,203);
line(360,200,360,203);
line(370,200,370,203);
line(380,200,380,203);
line(390,200,390,203);
line(400,200,400,203);
/*Dibuja la graduación de la linea izquierda*/
line(190,200,190,203);
line(180,200,180,203);
line(170,200,170,203);
line(160,200,160,203);
line(150,200,150,203);
line(140,200,140,203);
line(130,200,130,203);
line(120,200,120,203);
line(110,200,110,203);
line(100,200,100,203);
line(90,200,90,203);
line(80,200,80,203);
line(70,200,70,203);
line(60,200,60,203);
line(50,200,50,203);
line(40,200,40,203);
line(30,200,30,203);
line(20,200,20,203);
line(10,200,10,203);
line(0,200,0,203);
/*Dibuja la graduación de la linea de arriba*/
line(200,190,203,190);
line(200,180,203,180);
line(200,170,203,170);
line(200,160,203,160);
line(200,150,203,150);
line(200,140,203,140);
line(200,130,203,130);
line(200,120,203,120);
line(200,110,203,110);
line(200,100,203,100);
line(200,90,203,90);
line(200,80,203,80);
line(200,70,203,70);
line(200,60,203,60);
line(200,50,203,50);
line(200,40,203,40);
line(200,30,203,30);
line(200,20,203,20);
line(200,10,203,10);
line(200,0,203,0);
/*Dibuja la graduación de la linea de abajo*/
line(200,210,197,210);
line(200,220,197,220);
line(200,230,197,230);
line(200,240,197,240);
line(200,250,197,250);
line(200,260,197,260);
line(200,270,197,270);
line(200,280,197,280);
line(200,290,197,290);
line(200,300,197,300);
line(200,310,197,310);
line(200,320,197,320);
line(200,330,197,330);
line(200,340,197,340);
line(200,350,197,350);
line(200,360,197,360);
line(200,370,197,370);
line(200,380,197,380);
line(200,390,197,390);
line(200,400,197,400);
/*Se escriben los numeros de graduacion en la barra derecha*/
settextstyle(2,0,2);
outtextxy(210, 205, "1");
outtextxy(220, 205, "2");
outtextxy(230, 205, "3");
outtextxy(240, 205, "4");
outtextxy(250, 205, "5");
outtextxy(260, 205, "6");
outtextxy(270, 205, "7");
outtextxy(280, 205, "8");
outtextxy(290, 205, "9");
outtextxy(300, 205, "10");
outtextxy(310, 205, "11");
outtextxy(320, 205, "12");
outtextxy(330, 205, "13");
outtextxy(340, 205, "14");
outtextxy(350, 205, "15");
outtextxy(360, 205, "16");
outtextxy(370, 205, "17");
outtextxy(380, 205, "18");
outtextxy(390, 205, "19");
outtextxy(400, 205, "20");
/*Se escriben los numeros de graduacion de la barra izquierda*/
outtextxy(190, 205, "1");
outtextxy(180, 205, "2");
outtextxy(170, 205, "3");
outtextxy(160, 205, "4");
outtextxy(150, 205, "5");
outtextxy(140, 205, "6");
outtextxy(130, 205, "7");
outtextxy(120, 205, "8");
outtextxy(110, 205, "9");
outtextxy(100, 205, "10");
outtextxy(90, 205, "11");
outtextxy(80, 205, "12");
outtextxy(70, 205, "13");
outtextxy(60, 205, "14");
outtextxy(50, 205, "15");
outtextxy(40, 205, "16");
outtextxy(30, 205, "17");
outtextxy(20, 205, "18");
outtextxy(10, 205, "19");
outtextxy(0, 205, "20");
/*Se escriben los numeros de graduación de la barra de arriba*/
outtextxy(205, 190, "1");
outtextxy(205, 180, "2");
outtextxy(205, 170, "3");
outtextxy(205, 160, "4");
outtextxy(205, 150, "5");
outtextxy(205, 140, "6");
outtextxy(205, 130, "7");
outtextxy(205, 120, "8");
outtextxy(205, 110, "9");
outtextxy(205, 100, "10");
outtextxy(205, 90, "11");
outtextxy(205, 80, "12");
outtextxy(205, 70, "13");
outtextxy(205, 60, "14");
outtextxy(205, 50, "15");
outtextxy(205, 40, "16");
outtextxy(205, 30, "17");
outtextxy(205, 20, "18");
outtextxy(205, 10, "19");
outtextxy(205, 0, "20");
/*Se escriben los numeros de graduación de la barra de abajo*/
outtextxy(190, 220, "2");
outtextxy(190, 230, "3");
outtextxy(190, 240, "4");
outtextxy(190, 250, "5");
outtextxy(190, 260, "6");
outtextxy(190, 270, "7");
outtextxy(190, 280, "8");
outtextxy(190, 290, "9");
outtextxy(190, 300, "10");
outtextxy(190, 310, "11");
outtextxy(190, 320, "12");
outtextxy(190, 330, "13");
outtextxy(190, 340, "14");
outtextxy(190, 350, "15");
outtextxy(190, 360, "16");
outtextxy(190, 370, "17");
outtextxy(190, 380, "18");
outtextxy(190, 390, "19");
outtextxy(190, 400, "20");
/*Fin de plano cartesiano graduado*/
/*Trazar los dominios y el rango para función de 2 dominios*/
/*Se traza la linea de la función*/
setcolor(2);
line(x1,y1,x2,y2);


printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n*Funciomatico*\n*Por -DTC-*\n---Grafica de la funcion");
getchar();
closegraph();

}[/codex]

Al querer salir del modo gráfico a pantalla completa y continuar con el programa, solo se quita la gráfica, pero se imprime "final" en una pantalla negra y después un _ parpadeante.

¿Alguna idea para solucionar esto?


Muchas gracias de antemano

Avatar de Usuario
ivancp
Colaborador
Colaborador
Mensajes:685
Registrado:Jue Sep 06, 2007 12:58 pm
Contactar:

Re: Ayuda con graphics.h

Mensaje por ivancp » Vie Abr 29, 2011 10:32 am

Hola,

graphics.h es una libreria que esta disponible en los compiladores PREHISTORICOS de borland, por favor deja de usarlos... es descabellado que alguien siga usandolos cuando hay herramientas mas acuales. Ademas este compilador no es compatible con nada!

Te sugiero cambiar de compilador, puedes usar dev-cpp, visual c++ express, en ambos puedes utilizar las opciones graficas, claro que no es tan sencillo como initgraph... closegraph pero de seguro que ese proceso te va a servir de algo mas adelante.

Un abrazo
Imagen @latindev | Mi Blog
Por favor lee las reglas del foro

Avatar de Usuario
Dtc
Novato
Novato
Mensajes:3
Registrado:Jue Abr 28, 2011 4:09 pm

Re: Ayuda con graphics.h

Mensaje por Dtc » Vie Abr 29, 2011 11:01 am

Lo que pasa es que soy algo principiante en esto, y en el blog en el que inicie con esto de la programación en C me recomendaron Borland para empezar, además que igual en mi escuela lo usan, aunque ya he estado utilizando Dev-C++ el cual estoy probando junto con Glut, a ver que tal sale

Gracias por responder

Avatar de Usuario
ivancp
Colaborador
Colaborador
Mensajes:685
Registrado:Jue Sep 06, 2007 12:58 pm
Contactar:

Re: Ayuda con graphics.h

Mensaje por ivancp » Sab Abr 30, 2011 7:41 am

Nos cuentas como te fue
Imagen @latindev | Mi Blog
Por favor lee las reglas del foro

Avatar de Usuario
Dtc
Novato
Novato
Mensajes:3
Registrado:Jue Abr 28, 2011 4:09 pm

Re: Ayuda con graphics.h

Mensaje por Dtc » Sab Abr 30, 2011 4:11 pm

Ahora mismo ya estoy programando con Glut en OpenGL.
Me ha sido de mucha utilidad por que el proyecto para el que lo uso va viento en popa. Ahora ya no uso Borland C++, si no Dev-C++
Gracias!! :mrgreen:

Avatar de Usuario
ivancp
Colaborador
Colaborador
Mensajes:685
Registrado:Jue Sep 06, 2007 12:58 pm
Contactar:

Re: Ayuda con graphics.h

Mensaje por ivancp » Sab Abr 30, 2011 6:53 pm

Esa es muy buena noticia, seria genial que en los centros de formacion dejen de usar esa prehistorica herramienta.
Imagen @latindev | Mi Blog
Por favor lee las reglas del foro

Responder