我被要求存储并绘制一组线段。
程序在输入是否输入负坐标或已输入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语句,但是这些语句完全取决于XCoordYCoord函数。他们可能实际上从未返回过负数。

09-04 13:37
查看更多