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

相关文章

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke