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

来源:互联网 发布:周末c语言培训 编辑:程序博客网 时间:2024/06/18 03:16
#include <iostream>#include <cmath>using namespace std;class CPoint{private:    double X;  // 横坐标    double Y;  // 纵坐标public:    CPoint(double xx=0,double yy=0);    void input();    double distance1(CPoint p) const;};CPoint::CPoint(double xx,double yy){    X=xx;    Y=yy;}void CPoint::input(){    char s;    while(1)    {        cin>>X>>s>>Y;        if(s==',') break;        cout<<"输入错误"<<endl;    }}double CPoint::distance1(CPoint p) const{    double d;    d=sqrt((p.X-X)*(p.X-X)+(p.Y-Y)*(p.Y-Y));    return d;}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; //三顶点};void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z){    A=X;    B=Y;    C=Z;}float CTriangle::perimeter(void){    double a=B.distance1(C),b=C.distance1(A),c=A.distance1(B);    return (a + b + c);}float CTriangle::area(void){    double a=B.distance1(C),b=C.distance1(A),c=A.distance1(B);    double s = (a + b + c) / 2;    return sqrt(s * (s - a) * (s - b) * (s - c));}bool CTriangle::isRightTriangle(){    double a=B.distance1(C),b=C.distance1(A),c=A.distance1(B);    double max=a;    if(b>max) max=b;    if(c>max) max=c;    if(((max==a)&&(abs(a*a-b*b-c*c)<1e-7))||((max==b)&&(abs(b*b-a*a-c*c)<1e-7))||((max==c)&&(abs(c*c-b*b-a*a)<1e-7)))        return true;    else        return false;}bool CTriangle::isIsoscelesTriangle() //是否为等腰三角形{    double a=B.distance1(C),b=C.distance1(A),c=A.distance1(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;    cout<<"请输入三点坐标:";    X.input();    Y.input();    Z.input();    CTriangle Tri1(X,Y,Z);    cout<<"三角形的周长是:"<<Tri1.perimeter()<<","<<"三角形的面积是:"<<Tri1.area()<<endl;    cout<<"该三角形"<<(Tri1.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl;    cout<<"该三角形"<<(Tri1.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl;    return 0;}

运行结果:


0 0
原创粉丝点击