如何在 C 中做这个程序?第 3.2-3.9 部分



是否需要多个条件,如多个 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 intersectn");
}
return EXIT_SUCCESS;
}

步骤 1 - 罪魁祸首是 scanf 中的 ""。如果您删除它,它将起作用如果您在步骤 2 或步骤 3 中需要任何特定帮助,请告诉我。

你的maxmin函数是错误的。
1. 您没有比较在这些函数中传递的参数的最大值/最小值。
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) );

第一件事:

return scanf("%d%d%d%dn",w,x,y,z);

应该是

return scanf("%d %d %d %d",w,x,y,z);

然后,您可以将数字列表输入为空格分隔的列表,它将正确扫描它们。

你问题的其他部分,你必须尝试解决自己,让你的问题更具体,并提出新的问题。

相关内容

  • 没有找到相关文章

最新更新