首页 > 其他分享 >以圆类Circle及立体图形类Solid为基础设计圆锥类Cone

以圆类Circle及立体图形类Solid为基础设计圆锥类Cone

时间:2023-05-08 21:47:35浏览次数:126  
标签:以圆类 const Point Solid double Cone run Circle

以点类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
 

输出样例:

Point Constructor run
Circle Constructor run
Cone Constructor run
Point CopyConstructor run
Circle CopyConstructor run
Cone CopyConstructor run
Cone(Circle(Point(X=1,Y=2),Radius=3),Height=4)
Area=28.2743
Length=18.8495
S_Area=75.3982
Volumn=37.6991
Cone(Circle(Point(X=1,Y=2),Radius=3),Height=1)
Area=28.2743
Length=18.8495
S_Area=58.078
Volumn=9.42477
Cone Destructor run
Circle Destructor run
Point Destructor run
Cone Destructor run
Circle Destructor run
Point Destructor run
代码答案:

class Circle:public Point,public Plane
{
public:
Circle(double x2=0,double y2=0,double r2=0);
Circle(const Circle &P);
~Circle();
void setR(double r2);
double getR()const;
void show ()const;
double area()const;
double length()const;
static constexpr double PI=3.14159;
private:
double radius;
//static constexpr double PI=3.14159;
};
Circle::Circle(double x2,double y2,double r2):Point(x2,y2)
{
radius=r2;
cout<<"Circle Constructor run"<<endl;
}
Circle::Circle(const Circle &P):Point(P)
{
//x=P.x;
//y=P.y;
radius=P.radius;
cout<<"Circle CopyConstructor run"<<endl;
}
Circle::~Circle()
{
cout<<"Circle Destructor run"<<endl;
}
void Circle::setR(double r2)
{
radius=r2;
}
double Circle::getR()const
{
return radius;
}
void Circle::show()const
{
cout<<"(Point("<<getX()<<","<<getY()<<"),"<<"Radius="<<"r2"<<")";
}
double Circle:: area()const
{
return PI*radius*radius;
}
double Circle::length()const
{
return 2*PI*radius;
}
class Cone:public Circle ,public Solid
{private:
double height;
public:
Cone(double x1=0 ,double y1=0, double r1=0,double h1=0);
Cone(const Cone &P);
~Cone();
void setH(double h1);
double getH()const;
void show() const;
double s_Area()const;
double volume()const;
};
Cone::Cone(double x1,double y1,double r1,double h1):Circle(x1,y1,r1)
{
height=h1;
cout<<"Cone Constructor run"<<endl;
}
Cone::Cone(const Cone &P): Circle(P)
{
//x=P.x;
//y=P.y;
//radius=P.radius;
cout<<"Cone CopyConstructor run"<<endl;
}
Cone::~Cone()
{
cout<<"Cone Destructor run"<<endl;

}
void Cone::setH(double h1)
{
height=h1;
}
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 area()+(length()*sqrt(getR()*getR()+height*height))/2.0;
}
double Cone::volume()const
{
return (area()*height)/3.0;
}

标签:以圆类,const,Point,Solid,double,Cone,run,Circle
From: https://www.cnblogs.com/qian-heng/p/17383237.html

相关文章

  • pta_【CPP0027】以圆类Circle及立体图形类Solid为基础设计球类Sphere
    #include<iostream>usingnamespacestd;//点类PointclassPoint{private:doublex;doubley;public:Point(doublexv=0,doubleyv=0);/*构造函数*/Point(constPoint&p);/*拷贝构造*/~Point();/*析构函数*/voidsetX(d......
  • 13.solidworks简单渲染教程
    1、打开solidworks,点击菜单栏的工具,然后选择插件,勾选PhotoView360两边的框2、右键特征工具栏,把渲染工具勾选3点击渲染工具,然后对想要更改的零件或者部位使用编辑外观和编辑布景更改外观颜色、材质、贴图以及背景 4、在绘图区域先摆好一个适合的角度,然后再添加相机......
  • 以点类Point及平面图形类Plane为基础设计圆类Circle
       classCircle:publicPlane,publicPoint{public:Circle(doublex=0,doubley=0,doubler=0):Point(x,y),radius(r){cout<<"CircleConstructorrun"<<endl;}Circle(constCircle&c):Point(c),radiu......
  • 11.solidworks零件另存后与工程图关联,工程图与零件关联问题
    一.工程图与零件关联1.不要打开零件情况下,点击打开 2.点击对应的工程图不要打开,点击下面的参考3.点击左边的零件去找到新的对应零件即可 4.完成 二、零件与工程图关联 工程图与零件的名称完全一直就会被关联......
  • pta__【CPP0025】以点类Point及平面图形类Plane为基础设计圆类Circle
    #include<iostream>usingnamespacestd;//点类PointclassPoint{private:doublex;doubley;public:Point(doublexv=0,doubleyv=0);/*构造函数*/Point(constPoint&p);/*拷贝构造*/~Point();/*析构函数*/virtualvoi......
  • 如何用Python画奥运五环——circle()
    奥林匹克标志(theOlympicsymbol),又称奥运五环标志,是由《奥林匹克宪章》确定的奥林匹克运动在全球范围内的视觉形象标识。它由5个奥林匹克环从左到右互相套接组成,上方是蓝色、黑色、红色三环,下方是黄色、绿色二环,亦能以单色形式使用,整体造型为一个底部小的规则梯形。1913年,现代奥......
  • 8.solidwork装配体太大,用大型设计审阅打开可以装配不能编辑,速度最快
     轻化零部件、大型装配体模式等方法的使用,通过这些方法可以提高打开装配体的速度。其实还可以进一步提高打开装配体的速度,那就是使用设计审阅。设计审阅能快速打开装配体,甚至非常大的装配体,同时可以进行装配体设计审阅时有用的各项功能,包括如下:导览设计树、测量距离、生成横断......
  • SOLIDWORKS河北衡水代理商-硕迪科技
    很多了解SOLIDWORKS的工程师都知道,达索系统SOLIDWORKS公司自己是不做直销的,全部都是经由经销商进行销售,可能有人会有疑问,除了找SOLIDWORKS经销商没有其他平台可以购买了吗?或许有人在采购SOLIDWORKS时会到各种购物平台进行搜索,发现也有商家在出售,而且价格还相当便宜。但是您需要注......
  • 2.solidworks快捷键等参数复制到其他用户方法
    导出solidwork快捷键等选项1.打开开始找到solidworks工具下的复制设定向导,或点击软件工具下的保存/恢复设置   2.点击保持设定,下一页3.设置保存位置和保存选项,即可 导入solidwork快捷键等选项1.打开复制设定向导,.选择恢复设定2,选择要恢复的文件位置和内容,选择当......
  • Altair SimSolid快速设计迭代的结构分析
    通过在几分钟内对功能齐全的CAD组件执行结构分析,AltairSimSolid是面向设计师、工程师和分析师的改变传统设计规则的仿真技术。它消除了几何准备和网格划分:传统结构仿真中执行的两项耗时、专业知识广泛且容易出错的任务。 可以在现实条件下快速模拟多个设计场景。可以使用任......