c++多态实现点到零点距离

现在给你一个二维平面上的点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;
}

图片说明