Скачиваний:
18
Добавлен:
01.05.2014
Размер:
1.85 Кб
Скачать
#include <iostream.h>
#include <string.h>

class FIGURE
{
protected:
	int X;
	int Y;
public:
	virtual void ShowCoord(void)=0;
};
class CIRCLE;

class QUADRANT: protected FIGURE
{
protected:
	int SIDE;
public:
	QUADRANT(int nX=0, int nY=0, int nSIDE=1)
		{X=nX; Y= nY; SIDE = nSIDE;}
	void ShowCoord(void)
		{cout<<X<<","<<Y<<endl;}
	void ShowSide(void)
		{cout<<SIDE<<endl;}
	friend void Compare(CIRCLE, QUADRANT);
};

class CIRCLE: protected FIGURE
{
protected:
	int RADIUS;
public:
	CIRCLE(int nX=0, int nY=0, int nRADIUS=1)
		{X=nX; Y=nY; RADIUS = nRADIUS;}
	void ShowCoord(void)
		{cout<<X<<","<<Y<<endl;}
	void ShowRadius(void)
		{cout<<RADIUS<<endl;}
	friend void Compare(CIRCLE, QUADRANT);
};

class IN_CIRCLE: protected CIRCLE, protected QUADRANT
{
public:
	IN_CIRCLE(CIRCLE c, QUADRANT q): CIRCLE(c), QUADRANT(q) {};
	void Display(void)
		{CIRCLE::ShowCoord();ShowRadius();
		 QUADRANT::ShowCoord();ShowSide();}
};

class IN_QUADRANT: protected CIRCLE, protected QUADRANT
{
public:
	IN_QUADRANT(CIRCLE c, QUADRANT q): CIRCLE(c), QUADRANT(q) {};
	void Display(void)
	{CIRCLE::ShowCoord();ShowRadius();
	 QUADRANT::ShowCoord();ShowSide();}
};

void Compare(CIRCLE c, QUADRANT q)
{
	try{
		if((c.X != q.X) || (c.X != q.Y) || (2*(c.RADIUS) != q.SIDE)) throw 0;
	}
	catch(int)
	{
		cout<<"Exception"<<endl;
	}
}

void main(void)
{
	CIRCLE c1(20,20,5);
	QUADRANT q1(30,20,10);
	IN_CIRCLE in_c1(c1,q1);
	IN_QUADRANT in_q1(c1,q1);
	cout<<"---CIRCLE---------------"<<endl;
	c1.ShowCoord();
	c1.ShowRadius();
	cout<<"---QUADRANT-------------"<<endl;
	q1.ShowCoord();
	q1.ShowSide();
	cout<<"---IN_CIRCLE------------"<<endl;
	in_q1.Display();
	cout<<"---IN_QUADRANT----------"<<endl;
	in_q1.Display();
	cout<<"---Compare()------------"<<endl;
	Compare(c1, q1);
}