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 programa de forma normal.
Por ejemplo, con este código:
Código C:
Ver original
#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; delay(300); hacergrafico1(chale, nel, cor, jor); } void grafico() { int drive=DETECT,a,error; initgraph(&drive,&a,"C:\\BC5\\BGI"); error=graphresult(); if (error != grOk) { } } 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"); closegraph(); }
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