我被要求存储并绘制一组线段。
程序在输入是否输入负坐标或已输入2x MAXSEGMENTS个段之前,应打印消息“无路口”或“找到路口”(视情况而定)。
int main(void) {
lineSeg_t line, allsegments[MAXSEGMENTS];
point_t a, b;
int pointssofar=0, i, v, w, x, y;
OpenGraphics();
while (pointssofar<=(2*MAXSEGMENTS)){
a=GetPoint();
x=XCoord(a);
y=YCoord(a);
if ((x<0)||(y<0))
break;
b=GetPoint();
v=XCoord(b);
w=YCoord(b);
if ((v<0)||(w<0))
break;
line=LineSeg(a, b);
DrawLineSeg(line);
allsegments[((pointssofar+2)/2)]=line;
for (i=0;i<(pointssofar/2);i++){
if (intersect(line, allsegments[i])==TRUE){
printf ("Found an intersection");
pointssofar=2*MAXSEGMENTS;
} else if (pointssofar==(2*MAXSEGMENTS)){
printf("No intersection");
}
}
}
for(i=0;i<(pointssofar/2);i++){
if (intersect(allsegments[pointssofar/2], allsegments[i])==FALSE){
printf("No intersection");
}
}
}
我在输出消息时遇到问题。认为我陷入了while循环中,我真的不确定如何摆脱困境!
先感谢您。
最佳答案
您的while循环将永远不会终止,因为其中没有行会使其条件不成立。
while (pointssofar<=(2*MAXSEGMENTS)){
您更改任何这些值的唯一时间是
pointssofar=2*MAXSEGMENTS;
满足while循环条件。
您也有2个
break
语句,但是这些语句完全取决于XCoord
和YCoord
函数。他们可能实际上从未返回过负数。