首页 > 编程语言 >每日编程一小时(第二十三天)

每日编程一小时(第二十三天)

时间:2023-05-09 20:14:31浏览次数:33  
标签:const 第二十三 Point double 每日 编程 Circle void 构造函数

一.问题描述

以点类Point及平面图形类Plane为基类公有派生圆类Circle,再以圆类Circle及立体图形类Solid为基类公有派生圆锥类Cone,main(void)函数完成对圆锥类Cone的测试。

Point类结构说明:
Point类的数据成员包括:
①私有数据成员:X坐标x(double型),Y坐标y(double型)。
Point类成员函数包括:
①有参构造函数Point(double, double)和拷贝构造函数Point(const  Point  &),其中有参构造函数参数默认值为0,输出信息“Point Constructor run”,拷贝构造函数输出信息“Point CopyConstructor run”
②析构函数,析构函数输出信息“Point Destructor run”
③公有函数成员:void  setX(double)和double getX() const分别返回和设置X坐标
④公有函数成员:void  setY(double)和double getY() const分别返回和设置Y坐标
⑤公有成员函数void show() const用于显示点的坐标信息,显示格式为:Point(X=<X坐标>,Y=<Y坐标>)
Plane类结构说明:
Plane类的成员函数包括:
①纯虚函数virtual double length()const用于计算平面图形的周长
②纯虚函数virtual double area()const用于计算平面图形的面积
Solid类结构说明:
Solid类的成员函数包括:
①纯虚函数virtual double volume()const用于计算立体图形的体积
②纯虚函数virtual double s_Area()const用于计算立体图形的表面积
Circle类结构说明:
公有派生圆类Circle以点类Point、平面图形类Plane为基类,Circle类的结构说明如下:
Circle类的数据成员包括:
①圆心坐标继承自Point类
②保护静态数据常量PI(double型),其值为3.14159
③私有数据成员:半径radius(double型)。
Circle类成员函数包括:
①有参构造函数Circle(double, double, double)和拷贝构造函数Circle(const Circle &),其中有参构造函数参数包括圆心坐标和半径,圆心调用Point类构造函数进行构造,各参数默认值为0,输出信息“Circle Constructor run”,拷贝构造函数输出信息“Circle CopyConstructor run”
②析构函数,析构函数输出信息“Circle Destructor run”
③公有函数成员void setR(double)和double getR()const分别返回和设置radius
④重载void show()const用于显示圆的信息,显示格式为:
Circle(Point(<圆心X坐标>,<圆心Y坐标>),Radius=<半径>)
⑤重载double area()const用于计算圆的面积
⑥重载double length()const用于计算圆的周长
Cone类结构说明:
公有派生圆锥类Cone以圆类Circle、立体图形类Solid为基类,Cone类的结构说明如下:
Cone类的数据成员包括:
①基圆继承自Circle类
②私有数据成员:高度 height(double型)
Cone类成员函数包括:
①有参构造函数Cone(double, double, double,double)和拷贝构造函数Cone(const Cone &),其中有参构造函数参数包括基圆圆心坐标、半径和高度,基圆调用Circle类构造函数进行构造,各参数默认值为0,输出信息“Cone Constructor run”,拷贝构造函数输出信息“Cone CopyConstructor run”
②析构函数,析构函数输出信息“Cone Destructor run”
③重载void show()const用于显示圆锥的信息,显示格式为:
Cone(Circle(Point(<球心X坐标>,<球心Y坐标>),Radius=<半径>),Height=<高度>)
④重载double s_Area()const用于计算圆锥的面积
⑤重载double volume()const用于计算圆锥的体积
裁判测试程序样例:
#include <iostream>
#include<cmath>
using namespace std;
//点类Point
class Point{
private:
    double x;
    double y;
public:
    Point(double xv=0,double yv=0);/*构造函数*/
    Point(const Point &p);         /*拷贝构造*/
    ~Point();                      /*析构函数*/
    void setX(double xv);          /*设置X坐标*/
    void setY(double yv);          /*设置Y坐标*/
    double getX()const;            /*获取X坐标*/
    double getY()const;            /*获取Y坐标*/
    virtual void show()const;      /*显示*/
};
Point::Point(const double xv,const double yv){/*构造函数*/
    x=xv;
    y=yv;
    cout<<"Point Constructor run"<<endl;
}
Point::Point(const Point &p){/*拷贝构造*/
    x=p.x;
    y=p.y;
    cout<<"Point CopyConstructor run"<<endl;
}
Point::~Point(){/*析构函数*/
    cout<<"Point Destructor run"<<endl;
}
void Point::setX(double xv){/*设置X坐标*/
    x=xv;
}
void Point::setY(double yv){/*设置Y坐标*/
    y=yv;
}
double Point::getX()const{/*获取X坐标*/
    return x;
}
double Point::getY()const{/*获取Y坐标*/
    return y;
}
void Point::show()const{/*显示*/
    cout<<"Point(X="<<x<<",Y="<<y<<")";
}
//平面图形类Plane
class Plane{
public:
    virtual double length()const=0;/*周长*/
    virtual double area()const=0;  /*面积*/
};
//立体图形类Solid
class Solid{
public:
    virtual double volume()const=0;/*体积*/
    virtual double s_Area()const=0;/*表面积*/
};

/*请在这里填写答案*/

void show(Point *p){/*点基类的显示函数*/
    p->show();
}
void length(Plane *p){/*平面图形的周长函数*/
    cout<<"Length="<<p->length()<<endl;
}
void area(Plane &p){/*平面图形的面积函数*/
    cout<<"Area="<<p.area()<<endl;
}

void volumn(Solid *s){/*立体图形的体积函数*/
    cout<<"Volumn="<<s->volume()<<endl;
}
void s_Area(Solid &s){/*立体图形的表面积函数*/
    cout<<"S_Area="<<s.s_Area()<<endl;
}
//主函数
int main(void){
    double  h;
    cin>>h;
    Cone co1(1,2,3,4),co2(co1);
    show(&co1);
    cout<<endl;
    area(co1);
    length(&co1);
    s_Area(co1);
    volumn(&co1);
    co2.setH(h);
    show(&co2);
    cout<<endl;
    area(co2);
    length(&co2);
    s_Area(co2);
    volumn(&co2);
    return 0;
}
输入样例:
1.0

二.代码实现

#include <iostream>
#include<cmath>
using namespace std;
//点类Point
class Point {
private:
    double x;
    double y;
public:
    Point(double xv = 0, double yv = 0);/*构造函数*/
    Point(const Point& p);         /*拷贝构造*/
    ~Point();                      /*析构函数*/
    void setX(double xv);          /*设置X坐标*/
    void setY(double yv);          /*设置Y坐标*/
    double getX()const;            /*获取X坐标*/
    double getY()const;            /*获取Y坐标*/
    virtual void show()const;      /*显示*/
};
Point::Point(const double xv, const double yv) {/*构造函数*/
    x = xv;
    y = yv;
    cout << "Point Constructor run" << endl;
}
Point::Point(const Point& p) {/*拷贝构造*/
    x = p.x;
    y = p.y;
    cout << "Point CopyConstructor run" << endl;
}
Point::~Point() {/*析构函数*/
    cout << "Point Destructor run" << endl;
}
void Point::setX(double xv) {/*设置X坐标*/
    x = xv;
}
void Point::setY(double yv) {/*设置Y坐标*/
    y = yv;
}
double Point::getX()const {/*获取X坐标*/
    return x;
}
double Point::getY()const {/*获取Y坐标*/
    return y;
}
void Point::show()const {/*显示*/
    cout << "Point(X=" << x << ",Y=" << y << ")";
}
//平面图形类Plane
class Plane {
public:
    virtual double length()const = 0;/*周长*/
    virtual double area()const = 0;  /*面积*/
};
//立体图形类Solid
class Solid {
public:
    virtual double volume()const = 0;/*体积*/
    virtual double s_Area()const = 0;/*表面积*/
};
#include<cmath>
class Circle :public Point, public Plane
{
protected:
    static double PI;
private:
    double radius;
public:
    Circle(double x1 = 0, double y1 = 0, double r1 = 0);
    Circle(const Circle& p);
    ~Circle();
    void setR(double r1);
    double getR()const;
    void show()const;
    double area()const;
    double length()const;
};
double Circle::PI = 3.14159;
Circle::Circle(double x1, double y1, double r1) :radius(r1), Point(x1, y1)
{
    cout << "Circle Constructor run" << endl;
}
Circle::Circle(const Circle& p) :Point(p)
{
    radius = p.getR();
    cout << "Circle CopyConstructor run" << endl;
}
Circle::~Circle()
{
    cout << "Circle Destructor run" << endl;
}
void Circle::setR(double r1)
{
    radius = r1;
}
double Circle::getR()const
{
    return radius;
}
void Circle::show()const
{
    cout << "Circle(Point(X=" << getX() << ",Y=" << getY() << "),Radius=" << radius << ")";
}
double Circle::area()const
{
    return PI * radius * radius;
}
double Circle::length()const
{
    return PI * 2 * radius;
}
class Cone :public Circle, public Solid
{
    double height;
public:
    Cone(double x1 = 0, double y1 = 0, double r = 0, double h = 0);
    Cone(const Cone&);
    ~Cone()
    {
        cout << "Cone Destructor run" << endl;
    }
    void setH(double);
    double getH()const;
    void show()const;
    double s_Area()const;
    double volume()const;
};
Cone::Cone(double x1, double y1, double r, double h) :height(h), Circle(x1, y1, r)
{
    cout << "Cone Constructor run" << endl;
}
Cone::Cone(const Cone& p) :height(p.height), Circle(p)
{
    cout << "Cone CopyConstructor run" << endl;
}
void Cone::setH(double h)
{
    height = h;
}
double Cone::getH()const
{
    return height;
}
void Cone::show()const
{
    cout << "Cone(Circle(Point(X=" << getX() << ",Y=" << getY() << "),Radius=" << getR() << "),Height=" << height << ")";
}
double Cone::s_Area()const
{
    return PI * getR() * getR() + PI * getR() * sqrt(getR() * getR() + height * height);
}
double Cone::volume()const
{
    return PI * getR() * getR() * height / 3.0;
}

void show(Point* p) {/*点基类的显示函数*/
    p->show();
}
void length(Plane* p) {/*平面图形的周长函数*/
    cout << "Length=" << p->length() << endl;
}
void area(Plane& p) {/*平面图形的面积函数*/
    cout << "Area=" << p.area() << endl;
}

void volumn(Solid* s) {/*立体图形的体积函数*/
    cout << "Volumn=" << s->volume() << endl;
}
void s_Area(Solid& s) {/*立体图形的表面积函数*/
    cout << "S_Area=" << s.s_Area() << endl;
}
//主函数
int main(void) {
    double  h;
    cin >> h;
    Cone co1(1, 2, 3, 4), co2(co1);
    show(&co1);
    cout << endl;
    area(co1);
    length(&co1);
    s_Area(co1);
    volumn(&co1);
    co2.setH(h);
    show(&co2);
    cout << endl;
    area(co2);
    length(&co2);
    s_Area(co2);
    volumn(&co2);
    return 0;
}

 

标签:const,第二十三,Point,double,每日,编程,Circle,void,构造函数
From: https://www.cnblogs.com/zhenaifen/p/17386103.html

相关文章

  • 每日总结2023-05-09
    今天完成了广告界面的设计,通过上网查询,了解到互联网广告投放一般按照天数计费,费用高低不一,通常有几种模式:季度收费,按年收费,天数计费等。通过钟表计算广告运行的天数,来进行广告收益的计算,再将广告信息传输到数据库进行存储。 advertBean.javapackagecom.example.math.bean;......
  • 开发必备,开源 or 免费的 AI 编程助手
    AI大模型的火热,让开发圈近来如虎添翼,各种各样基于AI技术的开发者工具和新范式不断涌现,尤其是Github和OpenAI共同推出的CopilotX,更是一骑绝尘。本文推荐一些开源or免费的AI编程工具,不妨试着用起来。CodeGeeX有人称CodeGeeX是国产之光,被认为是GitHubCopilot的......
  • 软件测试面试-编程(电子书)
    C++是面向过程也面向对象的语言,具有预处理器、预处理器指令和宏、模板、对象、封装、继承、多态的特性。1、C++程序的内存通常如何分配?解答:全局数据区:通常存储全局变量、静态数据和常量代码区:所有类成员函数和非成员函数代码栈区:执行函数时分配的局部变量、函数参数、返回......
  • 关于并发编程与线程安全的思考与实践
    作者:京东健康张娜一、并发编程的意义与挑战并发编程的意义是充分的利用处理器的每一个核,以达到最高的处理性能,可以让程序运行的更快。而处理器也为了提高计算速率,作出了一系列优化,比如:1、硬件升级:为平衡CPU内高速存储器和内存之间数量级的速率差,提升整体性能,引入了多级高速缓......
  • 单相锁相环。 在simulink中采用C语言实现锁相环,不是matlab编程语
    单相锁相环。在simulink中采用C语言实现锁相环,不是matlab编程语言ifend、forend,而是C语言,与DSP和32编程中的语言一样,整个仿真没有一个模块,只有C需要写的锁相环函数,程序的运行频率和实际的开关频率一致。仿真结果如图所示,基于双二阶广义积分器的锁相环成功锁得电网相位。且在初......
  • PWM整流器。 整个仿真采用simulink嵌C语言实现,不是matlab编程
    PWM整流器。整个仿真采用simulink嵌C语言实现,不是matlab编程语言ifend、forend,而是C语言,与DSP和32编程中的语言一样,整个仿真没有一个模块,只有C语言写的程序,程序的运行频率和实际的开关频率一致。包括基于双二阶广义积分器的锁相环、双闭环前馈解耦、SVPWM都是用C语言写的,代码可......
  • CPT204面向对象编程指南
    AdvancedObject-OrientedProgrammingCPT204–FinalProjectCPT204AdvancedObject-OrientedProgrammingFinalProjectTaskSheet2–SupplementaryCPT204-2223FinalProjectTaskSheet2–SupplementaryInfo●Thisdocumentcontainssupplementaryinformationon......
  • 《Linux高性能服务器编程》学习记录(二)linux网络编程基础API
    Linux网络API主要有三种:socket地址API。socket最开始的含义是一个IP地址和端口对(ip,port)。它唯一地表示了使用TCP通信的一端,称其为socket地址。socket基础API。socket的主要API都定义在sys/socket.h头文件中,包括创建socket、命名socket、监听socket、接受连接、发起连接、读写......
  • 编程技巧
    一接口和面向接口编程1用ts编写基于interface的命令模式编写用户界面程序,页面有成百上千个子菜单约定基于命令模式编写负责子菜单的同事完成编程之后会将子菜单封装成一个命令对象,将其交给编写菜单集合界面的同事约定:调用子菜单的execute方法时会执行对应子菜单......
  • 不同设备如何统一语言编程平台高效开发?本文为你揭秘
     原文:https://mp.weixin.qq.com/s/8UHznZenc7A_UICta2bETg,点击链接查看更多技术内容。 随着数字化时代的发展,手机、平板、PC、电视、智能手表、车机等智能设备的普及率越来越高,但不同设备往往搭载了不同的操作系统。面对不同的操作系统与开发框架,应用开发难度大、成本高;同......