【问题描述】
(1)在前一周作业题(椭圆类——2)的基础上,增加一个Point类(点类), 包括私有成员横纵坐标x和y(均为int型),以及参数带默认值的构造函数Point(x=0,y=0); (2)给Point类增加拷贝(复制)构造函数Point(Point& p); (3)增加析构函数~Point();输出"Point xigou"以及待析构的点的横纵坐标。 (4)增加取横纵坐标值的函数int GetX(); int GetY(); (5)删除Ellipse类原来的四个数据成员,重新修改为 Point a,b; (6)修改Ellipse原来的构造函数Ellipse(int x1,int y1,int x2,int y2); 注意使用冒号语法对组合成员进行构造,并在构造函数里输出“gouzao 1”和x1,y1,x2,y2的值。 (7)增加一个Ellipse类的构造函数Ellipse(Point &p1,Point &p2); 并在构造函数里输出“gouzao 2”和x1,y1,x2,y2的值。 (8)修改Ellipse的析构函数的输出内容为“Ellipse xigou”以及待析构对象的外切矩形右下角的横纵坐标。 (9)去掉Ellipse类的拷贝构造函数、Fun函数,并修改剩余函数里的错误。【输入形式】
主函数:输入四个坐标点,用其初始化一个Ellipse对象e1。 输入两对坐标点,用其初始化2个Point对象p1和p2。 用p1和p2初始化一个新的Ellipse对象e2。 最后调用e1和e2的Show函数分别显示坐标,调用e1和e2的Area函数计算并输出。【输出形式】
程序运行结果【样例输入】
-3 1 3 -1 -3 2 3 -2【样例输出】
gouzao 1 -3 1 3 -1 gouzao 2 -3 2 3 -2 -3 1 3 -1 -3 2 3 -2 9.4245 18.849 Ellipse xigou 3 -2 Point xigou 3 -2 Point xigou -3 2 Point xigou 3 -2 Point xigou -3 2 Ellipse xigou 3 -1 Point xigou 3 -1 Point xigou -3 1#include#include #include using namespace std;class Point{ private: int p_x,p_y;public: //基本函数 Point(int x=0,int y=0);//参数带默认值的构造函数 Point(Point& p);//拷贝(复制)构造函数 ~Point();//析构函数 //功能函数 int GetX(){ return p_x;}//取横坐标值 int GetY(){ return p_y;}//取纵坐标值};Point::Point(int x,int y)//参数带默认值的构造函数{ p_x = x; p_y = y;}Point::Point(Point& p)//拷贝(复制)构造函数{ p_x = p.p_x; p_y = p.p_y;}Point::~Point()//析构函数{ cout << "Point xigou " << p_x << " " << p_y << endl;}class Ellipse{ private: Point a,b;public: //基础函数 Ellipse(int xx1,int yy1,int xx2,int yy2);//构造函数 Ellipse(Point &p1,Point &p2);//构造函数 ~Ellipse();//析构函数 //功能函数 double Area();//计算椭圆面积 int GetX1(){ return a.GetX();} int GetY1(){ return a.GetY();} int GetX2(){ return b.GetX();} int GetY2(){ return b.GetY();} void Show();//显示椭圆的外切矩形的顶点坐标};Ellipse::Ellipse(int xx1,int yy1,int xx2,int yy2):a(xx1,yy1),b(xx2,yy2){ cout << "gouzao 1 " << a.GetX() << " " << a.GetY() << " " << b.GetX() << " " << b.GetY() << endl;}Ellipse::Ellipse(Point &p1,Point &p2):a(p1),b(p2)//构造函数{ cout << "gouzao 2 " << a.GetX() << " " << a.GetY() << " " << b.GetX() << " " << b.GetY() << endl;}Ellipse::~Ellipse()//析构函数{ cout << "Ellipse xigou " << b.GetX() << " " << b.GetY() << endl;}double Ellipse::Area(){ return (double)( 3.1415 * fabs(b.GetX()-a.GetX()) * fabs(b.GetY()-a.GetY()) / 4 );}void Ellipse::Show()//显示椭圆的外切矩形的顶点坐标{ cout << a.GetX() << " " << a.GetY() << " " << b.GetX() << " " << b.GetY() << endl;}int main(){ int x1,y1,x2,y2,x3,y3,x4,y4; cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> x4 >> y4; Ellipse e1(x1,y1,x2,y2); Point p1(x3,y3); Point p2(x4,y4); Ellipse e2(p1,p2); e1.Show(); e2.Show(); cout << fixed << setprecision(4) << e1.Area() << endl; cout << fixed << setprecision(3) << e2.Area() << endl; return 0;}