2-5-2 对象作为数据成员

来源:互联网 发布:德勤财务咨询 知乎 编辑:程序博客网 时间:2024/06/05 18:40

问题及代码:

#include <iostream>#include <cmath>using namespace std;class CPoint{private:    double x;  // 横坐标    double y;  // 纵坐标public:    CPoint(double xx=0,double yy=0):x(xx),y(yy) {};    double Distance1(CPoint p) const; //两点之间的距离(一点是当前点——想到this了吗?,另一点为p)    double Distance0() const;          // 到原点(0,0)的距离    CPoint SymmetricAxis(char style) const;//style取'x','y'和'o'分别表示按x轴, y轴, 原点对称    void input();  //以x,y 形式输入坐标点    void output(); //以(x,y) 形式输出坐标点};double CPoint::Distance1(CPoint p) const{    return sqrt((this->x-p.x)*(this->x-p.x)+(this->y-p.y)*(this->y-p.y));}double CPoint::Distance0() const{    return sqrt(this->x*this->x+this->y*this->y);}CPoint CPoint::SymmetricAxis(char style) const{    CPoint n=*this;    switch(style)    {    case 'x':    {        n.x=-n.x;        break;    }    case 'y':    {        n.y=-n.y;        break;    }    case 'o':    {        n.x=-n.x;        n.y=-n.y;        break;    }    }    return n;}void CPoint::input(){    int a,b;    char c;    while(1)    {        cin>>a>>c>>b;        if(c!=',')        {            cout<<"error cin,retry."<<endl;            continue;        }        else            break;    }    x=a;    y=b;}void CPoint::output(){    cout<<'('<<x<<','<<y<<')'<<endl;}class CTriangle{public:    CTriangle(CPoint &X,CPoint &Y,CPoint &Z):A(X),B(Y),C(Z)    {        AB=A.Distance1(B);        AC=A.Distance1(C);        BC=B.Distance1(C);    } //给出三点的构造函数    void setTriangle(CPoint &X,CPoint &Y,CPoint &Z);//    float perimeter(void);//计算三角形的周长    float area(void);//计算并返回三角形的面积    bool isRightTriangle(); //是否为直角三角形    bool isIsoscelesTriangle(); //是否为等腰三角形private:    CPoint A,B,C; //三顶点    double AB,BC,AC;};void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z)//{    A=X;    B=Y;    C=Z;}float CTriangle::perimeter(void)//计算三角形的周长{    return AB+BC+AC;}float CTriangle::area(void){    double n;    n=(AB+BC+AC)/2;    return n*(n-AB)*(n-BC)*(n-AC);}bool CTriangle::isRightTriangle(){    if(AB*AB+BC*BC==AC*AC||AB*AB+AC*AC==BC*BC||BC*BC+AC*AC==AB*AB)        return true;}bool CTriangle::isIsoscelesTriangle(){    if(AB==BC||AB==AC||BC==AC)        return true;    else        return false;}int main(){    CPoint a(0,3),b(4,0),c(4,3);    CTriangle abc(a,b,c);    cout<<"perimeter:"<<abc.perimeter()<<endl;    cout<<"area:"<<abc.area()<<endl;    if(abc.isRightTriangle())        cout<<"abc is RightTriangle."<<endl;    else if(abc.isIsoscelesTriangle())        cout<<"abc is IsoscelesTriangle."<<endl;    return 0;}


运行结果:


学习小结:

写完第一个,第二个还是比较轻松的。

戒骄戒躁吧。


0 0
原创粉丝点击