该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我这种方法为什么图形只能显示一下就不见了,这是为什么?能不能用在双曲线上??能的话改哪里??
#include#includefloat a,b,c,xmin,xmax,max; void menu(){printf("\n*****welcome*****\n");
printf("\n 1.input coefficient");
printf("\n 2.input extent");
printf("\n 3.draw function curve");
printf("\n 4.quit");
printf("\n*****************\n");}
void fun1()
{ printf("input a,b,c\n");
scanf("%f,%f,%f",&a,&b,&c);
}void fun2()
{ printf("input xmin,xmax\n"); scanf("%f,%f",&xmin,&xmax);}
void funmax()
{ float m,n; if(xmin<0) m=-xmin; else m=xmin; if(xmax<0) n=-xmax; else n=xmax; if(m>=n) max=m; else max=n;}
float funx(float max_x)
{ return(max_x/2/max);}float funy(float max_y)
{float d; d=max_y/2/(a*max*max+b*max+c); if(d>0.6) d=0.6; if(d<0.0026) d=0.0026; return(d);}
void fun3()
{ int max_x,max_y; int graphdriver=DETECT,graphmode;
float x1,y1,x2,y2,x,coe_x,coe_y; initgraph(&graphdriver,&graphmode,"");
cleardevice(); max_x=getmaxx(); max_y=getmaxy();
funmax();
coe_x=funx(max_x); coe_y=funy(max_y); line(0,240,640,240); line(320,0,320,480); line(640,240,635,235); line(640,240,635,245); line(320,0,315,5); line(320,0,325,5); outtextxy(320,240,"(0,0)");
outtextxy(620,240,"x"); outtextxy(320,10,"y");
x1=max_x/2+xmin*coe_x,y1=max_y/2-(a*xmin*coe_x*xmin*coe_x+b*xmin*coe_x+c)*coe_y;
moveto((int)x1,(int)y1); for(x=xmin*coe_x;x<=xmax*coe_x;x++)
{ x2=max_x/2+x,y2=max_y/2-(a*x*x+b*x+c)*coe_y;
lineto((int)x2,(int)y2); }void getch();closegraph(); }
void main()
{ int n; menu(); while(1)
{ scanf("%d",&n); switch(n)
{ case 1:fun1();break;
case 2:fun2();break;
case 3:fun3();break;
case 4:exit(0);
default:printf("\n error \n"); } }}