C++第11周项目1、2 - 点类派生出直线类

2024-03-03 10:32
文章标签 c++ 项目 直线 生出 点类

本文主要是介绍C++第11周项目1、2 - 点类派生出直线类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8894095


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

#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(); //输出点的信息double x,y;   //数据成员,表示点的横坐标和纵坐标
};
void Point::PrintPoint()
{cout<<"Point:("<<x<<","<<y<<")";    //输出点
}class Line: public Point   //利用坐标点类定义直线类, 其基类的数据成员表示直线的中点
{
public:Line(Point pt1, Point pt2);  //构造函数,初始化直线的两个端点及由基类数据成员描述的中点,中点的坐标可以由端点坐标计算而来double Length();    //计算并返回直线的长度void PrintLine();   //输出直线的两个端点和直线长度
private:Point pts,pte;   //直线的两个端点
}; 
//下面定义Line类的成员函数int main()
{Point ps(-2,5),pe(7,9);Line l(ps,pe);_____________________;//输出直线l的信息(请补全代码)cout<<"\n The middle point of Line: ";_____________________ ;//输出直线l中点的信息(请补全代码,调用成员函数完成)return 0;
}

【项目2】要求与项目1几乎完全相同(除Point类中的数据成员要求为private型),要求补全点类和直线类的定义,调用main()函数输出一条直线的信息。
    请不要直接copy项目1的代码,通过修改项目1的程序完成项目2的要求。在有关“抄之有道”的学习方法中,我们有阅读代码,然后自己再写出来的建议。所以,项目2可以在以下代码的提示下开始去做,在项目1中获得的经验会有所帮助,这个过程也会对项目1中的收获有更多理解。其实,当这一些技术熟练之后,根据需求会自己设计并实现,那是我们的最终目标。

    项目2可以参考的代码如下,在完成时可以根据需要自行添加其他成员函数,成员函数在类内实现还是类外实现,也可以自行决定。

class Point //定义坐标点类
{
public://定义必要的构造函数void PrintPoint(); //输出点的信息
private:double x,y;   //点的横坐标和纵坐标
};
class Line: public Point   //利用坐标点类定义直线类, 其基类的数据成员表示直线的中点
{
public:Line(Point pts, Point pte);  //构造函数,用初始化直线的两个端点及由基类数据成员描述的中点void PrintLine();   //输出直线的两个端点和直线长度
private:class Point pts, pte;   //直线的两个端点
};
int main()
{Point ps(-2,5),pe(7,9);Line l(ps,pe);//下面输出直线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(); //输出点的信息
private: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 ";pts.PrintPoint();cout<<"\n 2nd ";pte.PrintPoint();cout<<"\n The Length of Line: "<<Length()<<endl;
}
int main()
{Point ps(-2,5),pe(7,9);Line l(ps,pe);l.PrintLine();//输出直线l的信息cout<<"\n The middle point of Line: ";l.PrintPoint() ;//输出直线l中点的信息return 0;
}


这篇关于C++第11周项目1、2 - 点类派生出直线类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/769358

相关文章

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

C++中全局变量和局部变量的区别

《C++中全局变量和局部变量的区别》本文主要介绍了C++中全局变量和局部变量的区别,全局变量和局部变量在作用域和生命周期上有显著的区别,下面就来介绍一下,感兴趣的可以了解一下... 目录一、全局变量定义生命周期存储位置代码示例输出二、局部变量定义生命周期存储位置代码示例输出三、全局变量和局部变量的区别作用域

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被