Требуется ли несколько условий, как в нескольких операторах if else, чтобы прямоугольники пересечения печатались правильно?
Шаг 3: Два прямоугольника пересекаются, если у них есть общая площадь. Два прямоугольника не пересекаются, если они только касаются (общего края или общего угла)
Два прямоугольника пересекаются (как указано выше) тогда и только тогда, когда
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;
}