关键还是程序的思路问题,算出的圆心坐标不在屏幕范围内怎么能用函数arc()画出弧形?
图形模式下坐标必须满足0<=x<=640,0<=y<=480,所以说输入的坐标点以及半径值都是有限制的。可以设判断条件,当输入值或计算得出的圆心坐标值超出范围就设置输入无效。比如
......
x=(int)((-b-sqrt(delta))/(2*a));
y=(int)((t-x*x1)/y1);
if(x<1||x>640||y<1||y>480)
{ printf("Input invalid!");
system("pause");
exit(1);
}
......
或者用循环要求重新输入弧点坐标。
总之这个题这种方法有很大限制。
老大,arc()函数是按逆时针方向为角度增量画弧,也就是说按逆时针为正方向,是从(200,200)按逆时针画弧到(400,400)而不是相反(而这样的画法又到屏幕外了),相反的话那就是角度要用负值。
你一定明白了。
还是一句老话,程序的这种方法有缺陷。
delta是double型,a,b,c等是float型,这不好哦,都改成double型试试,我没具体看你的计算方法。再者还要保证delta>0,tc2.0由于设计缺陷对float的处理有时会失败,外国人自己都说了,所以改为double再试试。
圆心这样计算就可以了
x1=(xe+x0)/2;
y1=(ye+y0)/2;
万恶的TC !
Q1 Q2 的定义int 能存足够的数据吗