Может ли кто-нибудь объяснить мне выход, пожалуйста?
Учитывая координаты нижнего левого угла (x,y), длину(l) и ширину (w) 2-х прямоугольников, напишите программу, чтобы найти пересечение двух заданных прямоугольников.
Предположим: пересечение всегда происходит.
тестовый пример
Вход 1
3 8 1515
2 6 10 10
Выход 1
2 6 17 16
Что я уже пробовал:
#include <stdio.h> #define max(x, y) (((x) > (y)) ? (x) : (y)) #define min(x, y) (((x) < (y)) ? (x) : (y)) int main() { int x1,y1,x3,y3,l1,l2,w1,w2; scanf("%d %d %d %d %d %d %d %d",&x1,&y1,&l1,&w1,&x3,&y3,&l2,&w2); int x2,y2,x4,y4; x2=x1+l1; y2=y1+w1; x4=x3+l2; y4=y3+w2; int x5 = max(x1, x3); int y5 = max(y1, y3); int x6 = min(x2, x4); int y6 = min(y2, y4); printf("%d,%d,%d,%d",x5,y5,x1,y6); return 0; }
Patrice T
В чем проблема ?
вы написали этот код, не понимая его ?
RickZeeland
Я на самом деле не эксперт по Си, но явно что-то не так с #define max().
Попробуйте заменить его операторами IF и посмотрите, что произойдет ...
Richard MacCutchan
В этих определениях нет ничего плохого.