我被要求存储和绘制一系列的linesegments。 该程序应打印消息" No intersection"或者"找到一个十字路口"如果输入了负坐标或输入了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循环中,我真的不知道如何离开! 提前谢谢。
答案 0 :(得分:0)
你的while循环永远不会终止,因为它中没有任何一行会使条件不正确。
while (pointssofar<=(2*MAXSEGMENTS)){
你唯一能改变这些价值的是
pointssofar=2*MAXSEGMENTS;
满足while循环条件。
您还有2个break
语句,但这些语句完全依赖于XCoord
和YCoord
函数。他们可能实际上不会返回负数。
答案 1 :(得分:0)
除非你找到一个交叉点,否则你似乎没有增加pointssofar。