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->toptop)&&(rect1->rightright)) 
			return (union_area-fabs((rect2->top-rect1->bottom)*(rect1->right-rect2->left))); 
		else if((rect1->top>rect2->top)&&(rect1->rightright)) 
			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(); 
		}			 
 
	} 
}