2015-第5周项目2-对象作为数据成员

来源:互联网 发布:迅雷mac版下载速度是0 编辑:程序博客网 时间:2024/05/16 02:02
/*  *Copyright (c)2014,烟台大学计算机与控制工程学院  *All rights reserved.  *文件名称:C++.cpp  *作    者:王一锟  *完成日期:2015年4月8日  *版 本 号:v1.0  *  *问题描述:  *输入描述: 输入三角形的三个顶点 *输出描述: 求出其面积、周长,并判断其是否为直角三角形和等腰三角形 */#include <iostream>#include <cmath>using namespace std;//输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。class CPoint{private:    double x;    double y;public:    CPoint(double xx=0,double yy=0);    double distance(CPoint p) const;    void input();    void output();};class CTriangle{public:    CTriangle(CPoint &X,CPoint &Y,CPoint &Z):A(X),B(Y),C(Z) {} //给出三点的构造函数    void setTriangle(CPoint &X,CPoint &Y,CPoint &Z);    float perimeter(void);//计算三角形的周长    float area(void);//计算并返回三角形的面积    bool isRightTriangle(); //是否为直角三角形    bool isIsoscelesTriangle(); //是否为等腰三角形private:    CPoint A,B,C; //三顶点};double CPoint::distance(CPoint p) const{    double a;    a=(x-p.x)*(x-p.x)+(y-p.y)*(y-p.y);    return sqrt(a);}CPoint::CPoint(double xx,double yy){    x=xx;    y=yy;}void CPoint::input(){    char a;    cout<<"请输入点坐标(格式x,y):\n";    while(1)    {        cin>>x>>a>>y;        if(a==',')            break;        else            cout<<"Input error!Please try again.";        }}    void CPoint::output(){    cout<<"("<<x<<','<<y<<")";}void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z){    A=X;    B=Y;    C=Z;}float CTriangle::perimeter(){    double s;    s=C.distance(A)+B.distance(A)+C.distance(B);    return s;}float CTriangle::area(){    double a,b,c;    b=C.distance(A);    c=B.distance(A);class CPoint{private:    double x;    double y;public:    CPoint(double xx=0,double yy=0);    double distance(CPoint p) const;    void input();    void output();};    a=C.distance(B);    double s=(a+b+c)/2;    return sqrt(s*(s-a)*(s-b)*(s-c));}bool CTriangle::isRightTriangle(){    double a,b,c,t;    b=C.distance(A);    c=B.distance(A);    a=C.distance(B);    if (a<b) {t=a;a=b;b=t;}    if (a<c) {t=c;c=a;a=t;}    if (b<c) {t=b;b=c;c=t;}    if (abs(a*a-b*b-c*c)<1e-7)        return true;    else        return false;}bool CTriangle::isIsoscelesTriangle(){    double a,b,c;    b=C.distance(A);    c=B.distance(A);    a=C.distance(B);    if((abs(a-b)<1e-7)||(abs(b-c)<1e-7)||(abs(c-a)<1e-7))        return true;    else        return false;}int main(){    CPoint X,Y,Z;    X.input();    Y.input();    Z.input();    CTriangle Tri1(X,Y,Z);    cout<<"周长:"<<Tri1.perimeter()<<endl<<"面积:"<<Tri1.area()<<endl;    cout<<"该三角形"<<(Tri1.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl;    cout<<"该三角形"<<(Tri1.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl;    return 0;}


 

运行结果:

 

 

 

 

 

0 0
原创粉丝点击