【发布时间】:2013-10-21 13:38:59
【问题描述】:
是否需要多个条件,如多个 if else 语句才能正确打印相交矩形?
步骤 3:如果两个矩形有共同区域,则相交 两个矩形不重叠,如果它们只是接触(公共边,或公共角)
两个矩形相交(如上所述)当且仅当,
i) max(xmin1, xmin2)
ii) 最大值(ymin1, ymin2)
您的输出将被格式化。如下所示,其中一个矩形显示为其左下角坐标(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;
}
【问题讨论】:
-
显示你的输出格式?
-
你不是说 int minInt(int x1, int x2){return x1
y2;} -
@JerryJeremiah;这将返回一个布尔值。 OP 想要两个数字的最大值或最小值。
-
我认为这个问题不应该结束。至少OP是他的努力提出的。由于他是初学者,他似乎无法实现他的逻辑。投票决定重新开放。
标签: c scanf intersection pass-by-reference call-by-value