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

第十三天打卡

时间:2023-05-10 22:22:32浏览次数:45  
标签:p1 const Point double void 打卡 xv 第十三天

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

题目:

#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;
}

答案:

double pointDis(const Point &p1,const Point &p2)
{
    return sqrt(pow(p1.getX() - p2.getX(),2) + pow(p1.getY() - p2.getY(), 2));
}
class Triangle : public Plane
{
private:
    Point a, b, c;
public:
    Triangle(const Point &o = Point(0,0), const Point &p = Point(0,0), const Point &q = Point(0,0)) : a(o), b(p), c(q)
    {
        cout << "Triangle Constructor run" << endl;
    }
    Triangle(const Triangle &t) : a(t.a), b(t.b), c(t.c)
    {
        cout << "Triangle CopyConstructor run" << endl;
    }
    ~Triangle()
    {
        cout << "Triangle Destructor run" << endl;
    }
    void setA(const Point &t)
    {
        this->a = t;
    }
    Point getA() const
    {
        return a;
    }
    void setB(const Point &t)
    {
        this->b = t;
    }
    Point getB() const
    {
        return b;
    }
    void setC(const Point &t)
    {
        this->c = t;
    }
    Point getC() const
    {
        return c;
    }
    void show() const
    {
        cout<<"Triangle(A=";
        a.show();
        cout<<",B=";
        b.show();
        cout<<",C=";
        c.show();
        cout<<")";
    }

    double length() const
    {
        return pointDis(a,b) + pointDis(a,c) + pointDis(b,c);
    }
    double area() const
    {
        double p = length() / 2;
        return sqrt(p * (p - pointDis(a,b)) *
                    (p - pointDis(a,c)) *
                    (p - pointDis(b,c)));
    }

};

 

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

相关文章

  • 2023.5.10编程一小时打卡
    一、问题描述:给出下面的人员基类框架:classPerson{protected:stringname;intage;public:Person();Person(stringp_name,intp_age);voiddisplay(){cout<<name<<“:”<<age<<endl;}};建立一个派生类student,增加以下成员数据:in......
  • 5.10打卡
      三、程序流程图 四、代码实现#include<bits/stdc++.h>#defineN10usingnamespacestd;main(){inti,a[N]={-3,4,7,9,13,45,67,89,100,180},low=0,high=N-1,mid,k=-1,m;printf("aÊý×éÖеÄÊý¾ÝÈçÏÂ:\n");for(i=0;i<N;i++)p......
  • c++打卡训练
    自守数(半成品,指没写出来,双倍给明天)流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){ longinti,m; intj,n,k,a=1; for(i=0;i<=100000;i++){ n=i; m=i*i; for(j=0;n=0;j++){ n/=10; for(k=j;k>=0;k--){ a=a+a*10; if(m%a==i){ printf......
  • 每日打卡-20.1
    一.问题描述编写程序提示用户输入一个班级中的学生人数n,再依次提示用户输入n个人在课程A中的考试成绩,然后计算出平均成绩,显示出来。请使用本书第9章中的数组类模板Array定义浮点型数组存储考试成绩。二.设计思路按照题目要求编写代码三.流程图四.伪代码 1五.代码......
  • 每日打卡-20.2
    一.问题描述初始化int类型数组datal[]={1,3,5,7,9,11,13,15,17,19,2,4,6,8,10,12,14,16,18,20},应用本章的直接插入排序函数模板进行排序。对此函数模板稍做修改,加入输出语句,在每插入一个待排序元素后显示整个数组,观察排序过程中数据的变化,加深对插入排序算法的理解。二.设计思路三.流程图四.......
  • 5-10打卡 练习
    typedefstructlist{ intdata; list*next;}list;list*initlist(){ list*a=newlist; a->data=0; a->next=NULL; returna;}voidpushback(list**h,intn){list*a=newlist;a->data=n;a->next=NULL;list*......
  • 每日打卡
    回文数问题描述:回文数指形如abcba类的数,求小于n<256的回文数问题分析:看千位权重与十位相同需要用循环写出个位t与十位i代码:#include<stdio.h> intmain() {            intm[16],n,i,t,count=0;            longunsigneda,k;      ......
  • 5月10日打卡
    例4-11题目描述:设计一个结构体存储学生的成绩信息,需要包括学号年级和成绩三项内容,学号的范围是0到99999999,年级分为freshman、sophomore、junior、、senior四种,成绩包括A、S、C、D四个等级。分析:1.学号包括27个二进制位有效信息,而年级、成绩各包括2个二进制位有效信息,采用......
  • 5.10打卡
    一、问题描述:求任意两个正整数的最小公倍数(LCM)。二、设计思路:对于输入的两个正整数m和n,每次输入的大小顺序可能不同,为了使程序具有一般性,首先对整数m和n进行大小排序,规定变量m中存警大数、变量n中存储小数。若输入时m的值小于变量n的值,则需要交换两个变量中存储的内容。再次强调:......
  • 打卡第十九天
    计算正五边形的面积和周长 一、正五边形的面积公式为:S=a2×25+10×5​​/4二、三、#include<iostream>#include<cmath>usingnamespacestd;intmain(){doublea,b,c;cin>>a;c=5*a;b=a*a*(sqrt(25+10*sqrt(5)))/4;cout<<b<<endl<<c<<end......