-1

線分の配列を保存して描画するように依頼されました。負の座標が入力された場合、または 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 ループから抜け出せずにいると思います。抜け出す方法が本当にわかりません! 前もって感謝します。

4

2 に答える 2

0

while ループは決して終了しません。これは、条件を真にしない行が含まれていないためです。

while (pointssofar<=(2*MAXSEGMENTS)){

これらの値を変更するのは、

pointssofar=2*MAXSEGMENTS;

while ループ条件を満たします。

2 つのステートメントもありますが、それらは関数と関数breakに完全に依存しています。実際には負の数を返すことはないかもしれません。XCoordYCoord

于 2013-11-13T19:32:06.333 に答える