www.pudn.com > Union_area.rar > union_area.cpp
#include "stdafx.h" #include#include using namespace std; class RECT { public: int left, right, top, bottom; public : RECT(int l,int r,int t,int b){left=l;right=r;top=t;bottom=b;} int area() { return fabs((right-left)*(bottom-top)); } }; int Count_Union(RECT *rect1,RECT *rect2); int main(int argc, char* argv[]) { RECT *rect1=new RECT(20,40,20,40); RECT *rect2=new RECT(30,50,30,50); cout< bottom-rect1->top)*(rect1->right-rect2->left))< area()+rect2->area(); if(rect1->right<=rect2->left) return union_area; else { if((rect1->top>=rect2->bottom)||(rect1->bottom<=rect2->top)) return union_area; else if((rect1->top top)&&(rect1->right right)) return (union_area-fabs((rect2->top-rect1->bottom)*(rect1->right-rect2->left))); else if((rect1->top>rect2->top)&&(rect1->right right)) return (union_area-fabs((rect2->bottom-rect1->top)*(rect1->right-rect2->left))); else { if(rect1->area()>=rect2->area()) return rect1->area(); else return rect2->area(); } } }