空间的点(继承)"/>
B. 三维空间的点(继承)
题目描述定义一个平面上的点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
3 4 5
6 8 8输出样例1
5
7.07107
12.8062
10
该题主要考察简单的类继承操作
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include <iomanip>
#include<cmath>
#include<cstring>
#include<cctype>
#include<queue>
#include<set>
using namespace std;class c2d
{
protected:double x, y;
public:c2d(double xx, double yy);double getdistance1();
};class c3d :public c2d
{
protected:double z;
public:c3d(double x, double y, double z);double getdistance2();
};double c3d::getdistance2()
{return sqrt((x) * (x) + (y) * (y) + (z) * (z));
}c3d::c3d(double x, double y, double z) :c2d(x, y)
{this->z = z;
}c2d::c2d(double xx, double yy)
{x = xx;y = yy;
}double c2d::getdistance1()
{return sqrt(x * x + y * y);
}int main()
{double x1, y1, z1, x2, y2, z2 ;cin >> x1 >> y1;c2d p1(x1, y1);cout << fixed << setprecision(0) << p1.getdistance1() << endl;cin >> x1 >> y1 >> z1;c3d p2(x1, y1, z1);cout << fixed << setprecision(5) << p2.getdistance2() << endl;cin >> x1 >> y1 >> z1;c3d p3(x1, y1, z1);cout << fixed << setprecision(4) << p3.getdistance2() << endl;cout << fixed << setprecision(0) << p3.getdistance1() << endl;return 0;
}
更多推荐
B. 三维空间的点(继承)
发布评论