首页 > 其他分享 >第十四天打卡

第十四天打卡

时间:2023-05-11 21:57:17浏览次数:45  
标签:const Point double void 第十四天 打卡 xv Circle

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

#include <iostream>
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  r;
    cin>>r;
    Sphere s1(1,2,3),s2(s1);
    show(&s1);
    cout<<endl;
    area(s1);
    length(&s1);
    s_Area(s1);
    volumn(&s1);
    s2.setR(r);
    show(&s2);
    cout<<endl;
    area(s2);
    length(&s2);
    s_Area(s2);
    volumn(&s2);
    return 0;
}

函数:

class Circle : public Point, public Plane
{
public:
    Circle(double x = 0, double y = 0, double r = 0) : Point(x, y), radius(r)
    {
        cout << "Circle Constructor run" << endl;
    }
    Circle(const Circle &c) : Point(c), radius(c.radius)
    {
        cout << "Circle CopyConstructor run" << endl;
    }
    ~Circle()
    {
        cout << "Circle Destructor run" << endl;
    }
    void setR(double r)
    {
        radius = r;
    }
    double getR() const
    {
        return radius;
    }
    void show() const
    {
        cout << "Circle(Point(X=" << getX() << ",Y=" << getY() << "),Radius=" << radius << ")";
    }
    double area() const
    {
        return PI * radius * radius;
    }
    double length() const
    {
        return 2 * PI * radius;
    }
protected:
    static const double PI;
    double radius;
};
class Sphere : public Circle, public Solid
{
public:
    Sphere(double x = 0, double y = 0, double r = 0) : Circle(x, y, r)
    {
        cout << "Sphere Constructor run" << endl;
    }
    Sphere(const Sphere &s) : Circle(s)
    {
        cout << "Sphere CopyConstructor run" << endl;
    }
    ~Sphere()
    {
        cout << "Sphere Destructor run" << endl;
    }
    void show() const
    {
        cout << "Sphere(";
        Circle::show();
        cout << ")";
    }
    double s_Area() const
    {
        return 4 * PI * radius * radius;
    }
    double volume() const
    {
        return 4.0 / 3.0 * PI * radius * radius * radius;
    }
};
const double Circle::PI = 3.14159;
void show(const Sphere *s)
{
    s->show();
}
void area(const Circle &c)
{
    cout << "Area=" << c.area() << endl;
}
void length(const Circle *c)
{
    cout << "Length=" << c->length() << endl;
}
void s_Area(const Sphere &s)
{
    cout << "S_Area=" << s.s_Area() << endl;
}
void volumn(const Sphere *s)
{
    cout << "Volumn=" << s->volume() << endl;
}

 

标签:const,Point,double,void,第十四天,打卡,xv,Circle
From: https://www.cnblogs.com/gjsgjs/p/17392355.html

相关文章

  • 每日打卡一道用vector写的题
    编程团体赛的规则为:每个参赛队由若干队员组成;所有队员独立比赛;参赛队的成绩为所有队员的成绩和;成绩最高的队获胜。现给定所有队员的比赛成绩,请你编写程序找出冠军队。输入格式:输入第一行给出一个正整数 N(≤104),即所有参赛队员总数。随后 N 行,每行给出一位队员的成绩,格式为......
  • c++打卡练习(25)
    回文数流程图:伪代码:源代码:#include<stdio.h>intmain(){ intm[16],n,i,t,count=0; longunsigneda,k; printf("No.numberit'ssquare(palindrome)\n"); for(n=1;n<256;n++) { k=0;t=1;a=n*n; for(i=0;a!=0;i++) { m[i]=a%10; a/=10; ......
  • 每日打卡
    水仙花数:问题描述;一个数等于其各个位上的数字的立方和的数被称为水仙花数,求100-1000内的水仙花数问题分析:可以将一个三位数的各个数位上的数拆开求立方和代码:#include<stdio.h> intmain() {            intg,s,b,n;            printf("结......
  • 5月11日打卡
    习题4-7题目描述:定义一个Dot类,包含的age、weight等属性,以及对这些属性操作的方法。实现并设计这个类。设计思路:1.定义一个类包含私有类型age、weigh、t共有类型构造函数和输出函数。流程图: 代码部分:#include<iostream>usingnamespacestd;classDot{private:i......
  • 打卡4
    问题描述:10个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个2块,8块,22块,16,4,10,6,14,20。然后所有小孩同时将手中的糖分一半给右边小孩;糖数为奇数的可向老师要一块。问经过多少次大家糖一样多?每个人多少糖。流程图:  伪代码:clswe[10]={10,2,8,22,16,4,10,6,14,20}  //糖wh......
  • 5-11打卡,交换两个list容器的区间的元素
    10-6编写一个具有以下原型的函数模板:templatevoidexchange(list&11,list::iteratorpl,list&12,list::iteratorp2);该模板用于将l1链表的[p1,l1.end())区间和l2链表的[p2,l2.end())区间的内容交换。在主函数中调用该模板,以测试该模板的正确性。#include<iostream>#incl......
  • 第20天打卡
    问题; 算法设计;先求出所有的因子,在判断他们相加是否等于这个数即可源代码:#include<stdio.h>intmain(){ inti,j,n,s; scanf("%d",&n); for(i=2;i<=n;i++) { s=0; for(j=1;j<i;j++) { if(i%j==0) s+=j; } if(s==i) printf("%d\n",i); }}......
  • 2023.5.11编程一小时打卡
    一、问题描述:完成“学生cpp成绩计算”之后,修改Person和Student类,各自增加两个无参构造函数。仍以Person类为基础,建立一个派生类Teacher,增加以下成员数据:intID;//教师工号Studentstu[100];//学生数组intcount;//学生数目,最多不超过100floatcpp_average;//班......
  • 打卡15
    舍罕王的失算#include<stdio.h>#include<math.h>intmain(){ doublesum=0; for(inti=1;i<=64;i++){ sum=sum+pow(2,i-1); } printf("国王总共需要赏赐给宰相的麦子数为:\n%f\n",sum);} ......
  • 打卡12
    importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);while(true){Stringstr=sc.next();if(str.equals("."))break;......