题目描述
定义一个平面上的点C2D类,它含有一个getDistance()的成员函数,计算该点到原点的距离;从C2D类派生出三维空间的点C3D类,它的getDistance()成员函数计算该点到原点的距离。试分别生成一个C2D和C3D的对象,计算它们到原点的距离。
三维空间的两点(x, y, z)和(x1, y1, z1)的距离公式如下:
[(x-x1)^2+(y-y1)^2+(z-z1)^2]^(1/2)
输入
第一行二维坐标点位置
第二行三维坐标点位置1
第三行三维坐标点位置2
输出
第一行二维坐标点位置到原点的距离
第二行三维坐标点位置1到原点的距离
第三行三维坐标点位置2到原点的距离
第四行三维坐标点位置2赋值给二维坐标点变量后,二维坐标点到原点的距离
样例查看模式
正常显示查看格式
输入样例1 <-复制
3 4\n
3 4 5\n
6 8 8
输出样例1
5\n
7.07107\n
12.8062\n
10
#include<iostream>
#include<iomanip>
using namespace std;
class C2D
{
protected:
int x;
int y;
public:
//getDistance()的成员函数,计算该点到原点的距离
C2D() {};
C2D(int x, int y)
{
this->x = x;
this->y = y;
}
void getDistance()
{
int dis = sqrt(x * x + y * y);
cout << dis << endl;
}
};
class C3D:public C2D
{
protected:
int z;
public:
C3D() {};
C3D(int x, int y, int z) :C2D(x, y)
{
this->z = z;
}
void getDistance()
{
double dis = sqrt(x * x + y * y + z * z);
cout << dis << endl;
}
};
int main()
{
int x, y;
cin >> x >> y;
C2D c1(x,y);
c1.getDistance();
int z;
cin >> x >> y >> z;
C3D c2(x, y, z);
c2.getDistance();
cin >> x >> y >> z;
C3D c3(x, y, z);
c3.getDistance();
C2D c4(x, y);
c4.getDistance();
return 0;
}