C++习题——椭圆类(拷贝构造函数和析构函数)
程序员文章站
2022-07-15 17:00:23
...
Description
(1)拷贝(复制)构造函数的实现。在上一题(椭圆类——1)的基础上,增加一个拷贝构造函数。函数原型格式:Ellipse(const Ellipse & e);
(2)增加Show()函数,显示椭圆的外切矩形的顶点坐标。
(3)增加一个成员函数Fun(int y),将椭圆外切矩形的左上角和右下角的纵坐标分别加y和减y。
(4)增加析构函数,在析构函数中输出“xigou”以及待析构对象的外切矩形左上角的横纵坐标。
Input
在主函数中输入顶点坐标后创建一个对象,并用该对象作为初始值再创建一个新对象。输入一个值,用于修改新对象的外切矩形的纵坐标。
Output
在主函数里调用这2个对象的Show函数分别输出外切矩形的顶点坐标,调用Area函数分别计算并输出椭圆的面积。接收修改值y后,调用Fun函数修改新对象的纵坐标。重新计算新对象的面积并输出。
Sample Input
-3 1 3 -1
1
Sample Output
-3 1 3 -1
-3 1 3 -1
9.4245
9.4245
18.849
xigou -3 2
xigou -3 1
#include <iostream>
#include <cmath>
using namespace std;
class Ellipse{
public:
Ellipse(int a,int b,int c,int d)
{
x1=a;
y1=b;
x2=c;
y2=d;
}
Ellipse(const Ellipse & e);
double Area()
{
double x;
x=3.1415*(x2-x1)*(y2-y1)/4;
if(x>=0)
return x;
if(x<0)
return -x;
}
int visitx1(){return x1;}
int visity1(){return y1;}
int visitx2(){return x2;}
int visity2(){return y2;}
void Show(){cout<<x1<<" "<<y1<<" "<<x2<<" "<<y2<<endl;}
void Fun(int y)
{
y1=y1+y;
y2=y2-y;
}
~Ellipse(){cout<<"xigou "<<x1<<" "<<y1<<endl;}
private:
int x1,y1,x2,y2;
};
Ellipse::Ellipse(const Ellipse & e){
x1=e.x1;
y1=e.y1;
x2=e.x2;
y2=e.y2;
}
int main()
{
int x1,y1,x2,y2,y;
cin>>x1>>y1>>x2>>y2;
cin>>y;
Ellipse a(x1,y1,x2,y2);
Ellipse b=a;
a.Show();
b.Show();
cout<<a.Area()<<endl;
cout<<b.Area()<<endl;
b.Fun(y);
cout<<b.Area()<<endl;
return 0;
}