• C++第11周(春)项目3


    课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759。内有完整教学方案及资源链接

    【项目3 - 点类派生直线类】定义点类Point,并以点类为基类。派生出直线类Line,从基类中继承的点的信息表示直线的中点。请阅读以下的代码,并将缺少的部分写出来。

    #include<iostream>  
    #include<Cmath>  
    using namespace std;  
    class Point //定义坐标点类  
    {  
    public:  
        Point():x(0),y(0) {};  
        Point(double x0, double y0):x(x0), y(y0) {};  
        void PrintPoint(); //输出点的信息  
    protected:  
        double x,y;   //点的横坐标和纵坐标  
    };  
    void Point::PrintPoint()  
    {  
        cout<<"Point: ("<<x<<","<<y<<")";    //输出点  
    }  
    class Line: public Point   //利用坐标点类定义直线类, 其基类的数据成员表示直线的中点  
    {  
    public:  
        Line(Point pts, Point pte); //构造函数,用初始化直线的两个端点及由基类数据成员描写叙述的中点  
        double Length();    //计算并返回直线的长度  
        void PrintLine();   //输出直线的两个端点和直线长度  
    private:  
        class Point pts,pte;   //直线的两个端点,从Point类继承的数据成员表示直线的中点  
    };  
      
    int main()  
    {  
        Point ps(-2,5),pe(7,9);  
        Line l(ps,pe);  
        cout<<"About the Line: "<<endl;  
        l.PrintLine();  //输出直线l的信息:两端点及长度  
        cout<<"The middle point of Line is: ";  
        l.PrintPoint(); //输出直线l中点的信息  
        return 0;  
    }  
    程序执行參考图:


    參考解答:

    #include<iostream>
    #include<Cmath>
    using namespace std;
    class Point //定义坐标点类
    {
    public:
        Point():x(0),y(0) {};
        Point(double x0, double y0):x(x0), y(y0) {};
        double getX()
        {
            return x;
        }
        double getY()
        {
            return y;
        }
        void PrintPoint(); //输出点的信息
    protected:
        double x,y;   //点的横坐标和纵坐标
    };
    void Point::PrintPoint()
    {
        cout<<"Point:("<<x<<","<<y<<")";    //输出点
    }
    
    class Line: public Point   //利用坐标点类定义直线类, 其基类的数据成员表示直线的中点
    {
    public:
        Line(Point pts, Point pte);  //构造函数,用初始化直线的两个端点及由基类数据成员描写叙述的中点
        double Length();    //计算并返回直线的长度
        void PrintLine();   //输出直线的两个端点和直线长度
    private:
        class Point pts,pte;   //直线的两个端点
    };
    //构造函数,分别用初始化直线的两个端点及由基类数据成员(属性)描写叙述的中点
    Line::Line(Point pt1, Point pt2):Point((pt1.getX()+pt2.getX())/2,(pt1.getY()+pt2.getY())/2)
    {
        pts=pt1;
        pte=pt2;
    }
    double Line::Length()  //计算并返回直线的长度
    {
        double dx = pts.getX() - pte.getX();
        double dy =pts.getY() - pte.getY();
        return sqrt(dx*dx+dy*dy);
    }
    void Line::PrintLine()
    {
        cout<<" 1st "<<endl;
        pts.PrintPoint();
        cout<<" 2nd "<<endl;
        pte.PrintPoint();
        cout<<" The Length of Line: "<<Length()<<endl;
    }
    int main()
    {
        Point ps(-2,5),pe(7,9);
        Line l(ps,pe);
            cout<<"About the Line: "<<endl;
        l.PrintLine();  //输出直线l的信息
        cout<<"The middle point of Line is: ";
        l.PrintPoint(); //输出直线l中点的信息
        return 0;
    }



    =================== 迂者 贺利坚 CSDN博客专栏=================
    |== IT学子成长指导专栏 专栏文章的分类文件夹(不定期更新) ==|
    |== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==|
    |== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|
    ===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====



  • 相关阅读:
    三范式
    SVN
    docker镜像文件的导入与导出(docker镜像迁移)
    OpenStack镜像服务基本操作
    keystone认证服务
    OpenStack存储(单节点)
    OpenStack单节点制作镜像
    清除OpenStack网络与路由
    制作OpenStack云平台centos6.5镜像
    OpenStack单节点网络设置
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/6970561.html
Copyright © 2020-2023  润新知