首页 > 其他分享 >第十二天第一个问题

第十二天第一个问题

时间:2023-04-26 19:45:37浏览次数:36  
标签:const 第一个 Point double void 第十二天 问题 run Triangle

问题描述:

以平面图形类Plane为基类公有派生三角形类Triangle,main(void)函数完成对其的测试。

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用于计算平面图形的面积
 

Triangle类结构说明:

 
公有派生三角形类Triangle以平面图形类Plane为基类,Triangle类的结构说明如下:
Triangle类的数据成员包括:
①私有数据成员:A顶点a(Point型),B顶点b(Point型),C顶点c(Point型)。
Triangle类成员函数包括:
①有参构造函数Triangle(const Point &, const Point &, const Point &)和拷贝构造函数Triangle(const Triangle &),其中有参构造函数参数包括3个顶点,默认值为Point(0,0),输出信息“Triangle Constructor run”,拷贝构造函数输出信息“Triangle CopyConstructor run”
②析构函数,析构函数输出信息“Triangle Destructor run”
③公有函数成员void setA(const Point &)和Point getA()const分别返回和设置A顶点
④公有函数成员void setB(const Point &)和Point getB()const分别返回和设置B顶点
⑤公有函数成员void setC(const Point &)和Point getC()const分别返回和设置C顶点
⑥公有函数成员void show()const用于显示三角形的信息,显示格式为:
Triangle(A=<A顶点>,B=<B顶点>,C=<C顶点>))
⑦重载double area()const用于计算三角形的面积
⑧重载double length()const用于计算三角形的周长
 

非成员函数说明:

 
①求两点间距离double pointDis(const Point &p1,const Point &p2)
 

裁判测试程序样例:

 
#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();                      /*析构函数*/
    virtual void show()const;      /*显示*/
    void setX(double xv);          /*设置X坐标*/
    void setY(double yv);          /*设置Y坐标*/
    double getX() const;           /*获取X坐标*/
    double getY() const;           /*获取Y坐标*/
};
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::show() const{/*显示*/
    cout<<"Point(X="<<x<<",Y="<<y<<")";
}
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;
}
class Plane{/*平面图形基类*/
public:
    virtual double length()const=0;/*周长*/
    virtual double area()const=0;  /*面积*/
};

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

void length(Plane *p){/*平面图形的周长函数*/
    cout<<"Length="<<p->length()<<endl;
}
void area(Plane &p){/*平面图形的面积函数*/
    cout<<"Area="<<p.area()<<endl;
}
//主函数
int main(void){
    double x,y;
    Point p1,p2(1,1),p3(2,2);
    Triangle t1,t2(t1);
    t1.show();
    cout<<endl;
    area(t1);
    length(&t1);
    cin>>x>>y;
    p1.setX(x);
    p1.setY(y);
    t2.setA(p1);
    t2.setB(p2);
    t2.setC(p3);
    t2.show();
    cout<<endl;
    area(t2);
    length(&t2);
    return 0;
}
 

输入样例:

3.0  2.0
 

输出样例:

Point Constructor run
Point Constructor run
Point Constructor run
Point Constructor run
Point Constructor run
Point Constructor run
Point CopyConstructor run
Point CopyConstructor run
Point CopyConstructor run
Triangle Constructor run
Point Destructor run
Point Destructor run
Point Destructor run
Point CopyConstructor run
Point CopyConstructor run
Point CopyConstructor run
Triangle CopyConstructor run
Triangle(A=Point(X=0,Y=0),B=Point(X=0,Y=0),C=Point(X=0,Y=0))
Area=0
Length=0
Triangle(A=Point(X=3,Y=2),B=Point(X=1,Y=1),C=Point(X=2,Y=2))
Area=0.5
Length=4.65028
Triangle Destructor run
Point Destructor run
Point Destructor run
Point Destructor run
Triangle Destructor run
Point Destructor run
Point Destructor run
Point Destructor run
Point Destructor run
Point Destructor run
Point Destructor run
代码:

double pointDis(const Point& p1, const Point& p2);
class Triangle : public Plane {
private:
Point A;
Point B;
Point C;
public:
Triangle(const Point& ap = Point(0, 0), const Point& bp = Point(0, 0), const Point& cp = Point(0, 0));
Triangle(const Triangle& t);
~Triangle();
void setA(const Point& ap);
Point getA() const;
void setB(const Point& bp);
Point getB() const;
void setC(const Point& cp);
Point getC() const;
void show() const;
double area() const;
double length() const;
};

Triangle::Triangle(const Point& ap, const Point& bp, const Point& cp) : A(ap), B(bp), C(cp) {
cout << "Triangle Constructor run" << endl;
}

Triangle::Triangle(const Triangle& t) : A(t.A), B(t.B), C(t.C) {
cout << "Triangle CopyConstructor run" << endl;
}

Triangle::~Triangle() {
cout << "Triangle Destructor run" << endl;
}

void Triangle::setA(const Point& ap) {
A = ap;
}

Point Triangle::getA() const {
return A;
}

void Triangle::setB(const Point& bp) {
B = bp;
}

Point Triangle::getB() const {
return B;
}

void Triangle::setC(const Point& cp) {
C = cp;
}

Point Triangle::getC() const {
return C;
}

void Triangle::show() const {
cout << "Triangle(A=";
A.show();
cout << ",B=";
B.show();
cout << ",C=";
C.show();
cout << ")";
}

double Triangle::area() const {
double a = pointDis(A, B);
double b = pointDis(B, C);
double c = pointDis(C, A);
double p = (a + b + c) / 2;
return sqrt(p * (p - a) * (p - b) * (p - c));
}

double Triangle::length() const {
return pointDis(A, B) + pointDis(B, C) + pointDis(C, A);
}

double pointDis(const Point& p1, const Point& p2) {
double dx = p1.getX() - p2.getX();
double dy = p1.getY() - p2.getY();
return sqrt(dx * dx + dy * dy);
}

 
 

标签:const,第一个,Point,double,void,第十二天,问题,run,Triangle
From: https://www.cnblogs.com/czfznb/p/17357070.html

相关文章

  • AcWing 242. 一个简单的整数问题 / 树状数组区间修改区间查询模板题
    AcWing242.一个简单的整数问题//实例化是抽象的天敌,是抽象的克星//通过公式sn=(i从1~n求积)di*(1+n)-(i从1~n求积)i*di//来计算前缀和,又(i从1~n求积)i*di不能由(i从1~n求积)di*(1+n)推出//所以除了维护d数组,还需维护......
  • qiankun vue子应用升级webpack5问题记录
    升级的方式是使用最新版本的vue-cli脚手架,重新创建一个新项目,然后复制@vue/cli-xxx,vue相关依赖最新版本到子应用项目->核对babel,eslint相关配置的变化->重新安装依赖,处理出现的相各种异常情况->启动项目检查功能是否正常。本次升级主要是为了使用webpack5。以下......
  • vue-router3.x和vue-router4.x相互影响的问题记录
    背景项目中有一个系统使用的微前端,主站使用是vue2实现的,使用的是vue-router3.x。子应用有使用vue3实现的,使用的为vue-router4.x。该子应用中的页面A有通过操作按钮触发跳转到其他子应用页面B的需求,此时使用的是vue-router4.x的编程式导航API。当通过点击主站的Tab切换回B的时候......
  • freeswitch的任务引擎问题与解决方案
     概述freeswitch核心框架中有一个定时任务系统task,在开发过程中用来做一些延时操作和异步操作很方便。我们在VOIP的呼叫流程中,经常会有一些对实时性要求没那么高的操作,或者会有阻塞流程的操作,我们都可以开启一个定时任务子流程,来达到延时和异步的目标。但是在实际的生产应用......
  • 关于idea使用Tomcat打开jsp文件页面失败的问题的解决
    问题描述在idea里面使用Tomcat打开jsp文件频繁报错,检查相关路径也没有任何问题,而且用来测试的jsp文件还是最简单的形式,困扰了大概5分钟左右问题解决经过查询百度可知,这次不是路径的问题,而是需要将我们在web文件夹里面创建的jsp文件复制到target文件夹里面保持与target文件夹里......
  • 三色球问题
     一、问题描述   一个口袋中放有12个球,已知其中3个红球,3个是白的,6个是黑的,先从中取8个,问共有多少种可能。二、设计思路   红球的取值范围是0到3,白球的范围也是0到3,黑球的范围是0到6,三、流程图 四、伪代码for(红球限制条件){for(白球限制条件){for(黑球限制条......
  • 去除echart鼠标经过图表时默认背景黄色问题
    废话不说,上代码:策一://注册mouseover事件,去除hover样式myChart.on("mouseover",function(){myChart.dispatchAction({type:"downplay",})})策二(荐):geo:{emphasis:{disabled:true},}写在最后duang~这时候产品站出来了,说我要在......
  • Java中关于String类以及字符串拼接的问题
    String类部分源码//被final修饰不可被继承publicfinalclassStringimplementsjava.io.Serializable,Comparable<String>,CharSequence{//String维护char[]所以不可修改privatefinalcharvalue[];创建String对象的方式str1它首先会去方法区的常量池......
  • 关于电脑脑共享文件无论怎么设置登录名都无法登录的问题。
    先写结论:电脑账户有可能是使用的微软账户登陆的,需要使用本地账户,设置方法是设置-》账户-》改用本地账户登录(好像叫这个),这个过程就是重新设置账户名与密码就可以了。经过:今天想要共享笔记本内的某个文件,但是发现除非设置共享不使用密码,否则无法查看。我的电脑重装过好几次,现在笔......
  • mac改变文件权限git识别未修改的问题
    mac改变文件权限后,gitstatus发现文件全部修改了。实际一点改变都没有:执行完修改文件权限后:sudochmod-R777你的文件夹名 npm启动提示部分文件没有权限修改权限后启动正常,但是gitstatus查看全是修改文件,对比文件却没有任何差异。最后想到应该是权限改动导致的解决方......