现在给你一个二维平面上的点a跟三维平面上的点b
要求:输出a的坐标以及a到(0,0)的长度
输出b的坐标以及b到(0,0,0,)的长度
限制: 1 定义Point_2类表示二维平面点
定义Point_3类表示三维平面点
Point_2是由Point_3 进行公有继承得到的
2 用成员函数getDis()计算距离
用成员函数showPos()输出坐标
这两个函数均使用多态。
Input
多组数据输入
对于每个测试样例,第一行是两个小数X,Y,第二行是三个小数x,y,z
小数的范围均在double类型的取值
Output
输出共四行
第一行输出(x,y)到(0,0)的距离
第二行输出两个小数x,y x y之间用空格分开
第三行输出(x,y,z)到(0,0,0)的距离
第四行输出三个小数 x,y,z x y z 之间用空格分开
输出均保留2位小数
Sample Input
3.0 4.0
1.0 1.0 0.0
Sample Output
5.00
3.00 4.00
1.41
1.00 1.00 0.00
拜托各位 实在是无能为力 有偿也可只要能帮忙写 可以私信我
其实 Point_2是由Point_3 进行公有继承得到的 这个要求不合理的,应该写个抽象类,给它们共同继承比较好;
既然题目这么要求,就直接上代码了;按题目要求写的。如果你编译器不识别std::cout 就改成cout。我习惯这么写
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
class Point_3
{
public:
Point_3(): m_x(0),m_y(0),m_z(0),m_l(0){}
virtual ~Point_3(){}
virtual double getDis(double x,double y,double z)
{
m_x = x;
m_y = y;
m_z = z;
m_l = sqrt(x*x + y*y + z*z);
return m_l;
}
virtual void showPos()
{
std::cout << m_l << endl;
std::cout << m_x << " " << m_y << " " << m_z << endl;
}
double m_x;
double m_y;
double m_z;
double m_l;
};
class Point_2:public Point_3
{
public:
Point_2():Point_3(){}
~Point_2(){}
virtual double getDis(double x,double y,double z)
{
m_x = x;
m_y = y;
m_l = sqrt(x*x + y*y);
return m_l;
}
virtual void showPos()
{
std::cout << fixed << setprecision(2);
std::cout << m_l << endl;
std::cout << m_x << " " << m_y << endl;
}
};
int main()
{
double x_2,y_2,x_3,y_3,z_3;
std::cout << "Pls Input:" << endl;
std::cin >> x_2 >> y_2;
std::cin >> x_3 >> y_3 >> z_3;
Point_3 *p_2 = new Point_2();
Point_3 *p_3 = new Point_3();
p_2->getDis(x_2,y_2,0.0);
p_3->getDis(x_3,y_3,z_3);
std::cout << "******************Output*******************" << endl;
p_2->showPos();
p_3->showPos();
return 0;
}