0

交差する四角形を正しく印刷するには、複数の if else ステートメントのように、複数の条件が必要ですか?

ステップ 3: 2 つの長方形が共通の領域を持っている場合は交差します 2 つの長方形が接触しているだけの場合は重なりません (共通のエッジまたは共通の角)</p>

2 つの長方形が交差する (上記で指定されているように)。

i) max(xmin1, xmin2) < min(xmax1, xmax2) および

ii) max(ymin1, ymin2) < min(ymax1, ymax2)

出力はフォーマットされます。以下に示すように、長方形は左下の座標 (xmin、ymin) と右上隅の座標 (xmax、ymax) として示されています。座標はデカルト平面の座標です。

出力例:

enter two rectangles: 

1 1 4 4

2 2 5 5

rectangle 1: (1,1)(4,4) 

rectangle 2: (2,2)(5,5) 

intersection rectangle: (2,2)(4,4)  

enter two rectangles: 

1 1 4 4

5 5 10 10

rectangle 1: (1,1)(4,4) 

rectangle 2: (5,5)(10,10) 

these two rectangles do not intersect 

コード:

#include <stdio.h>
#include <stdlib.h>

int readRect (int *w, int *x, int *y, int *z){
return scanf("%d%d%d%d",w,x,y,z);
}

int minInt(int x1, int x2){
return x1, x2;
}

int maxInt(int y1, int y2){
    return y1, y2;
}

int main (void){

int a,b,c,d,e,f,g,h;
printf(">>enter two rectangles:\n");

readRect(&a,&b,&c,&d);
readRect(&e,&f,&g,&h);
printf("rectangle 1:(%d,%d)(%d,%d)\n",a,b,c,d);
printf("rectangle 2:(%d,%d)(%d,%d)\n",e,f,g,h);

if(maxInt(a,e) < minInt(c,g) && maxInt(b,f) < minInt(d,g)){
        printf("intersection rectangle: (%d,%d)(%d,%d)\n",?,?,?,?);
}
else {
         printf("these rectangles do not intersect\n");
}

return EXIT_SUCCESS;
}
4

3 に答える 3

0

maxandの関数minが間違っています。
1.これらの関数内で渡されたパラメーターを最大/最小2つ比較していません。
2. 関数から 2 つの値を返すことはできません。

このようにする必要があります。

int minInt(int x1, int x2){
    if(x1 < x2)     
        return x1;
    else 
        return x2;
}

int maxInt(int x1, int x2){
    if(x1 > x2)     
        return x1;
    else 
        return x2;
} 

そしてprintf、交差点の長方形を印刷する ように変更します

printf("intersection rectangle: (%d,%d)(%d,%d)\n", maxInt(a,e), maxInt(b,f), minInt(c,g), minInt(d,h) );
于 2013-10-14T03:55:16.517 に答える