项目四
来源:互联网 发布:星际皆知我爱你百度云 编辑:程序博客网 时间:2024/05/04 23:58
#include<iostream>#include<cmath>using namespace std;//类1class CPoint{private: double x; // 横坐标 double y; // 纵坐标public: CPoint(double xx=0,double yy=0); double Distance(CPoint p) const; // 两点之间的距离(一点是当前点,另一点为参数p void input(); //以x,y 形式输入坐标点 void output(); //以(x,y) 形式输出坐标点};//类2class 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; //三顶点};CPoint::CPoint(double xx,double yy){ x=xx; y=yy;}double CPoint::Distance(CPoint p) const{ return (sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)));}void CPoint::input(){ char ch; cout<<"请输入(x,y)的值"; cin>>x>>ch>>y; if(ch!=',') cout<<"您输入的形式不对:";// break;}void CPoint::output(){ cout<<"("<<x<<","<<y<<")";}void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z){ A=X; B=Y; C=Z;}float CTriangle::perimeter(void)//周长{ double a=A.Distance(B),b=B.Distance(C),c=A.Distance(C);return (a+b+c); }float CTriangle::area(void)//面积{double a=A.Distance(B),b=B.Distance(C),c=A.Distance(C); double s; s=0.5*(a+b+c);return (sqrt(s*(s-a)*(s-b)*(s-c)));}bool CTriangle::isRightTriangle(){ double a=A.Distance(B),b=B.Distance(C),c=A.Distance(C); if(a*a==b*b+c*c&&b*b==a*a+c*c&&c*c==a*a+b*b)return true;else return false;}bool CTriangle::isIsoscelesTriangle(){ double a=A.Distance(B),b=B.Distance(C),c=A.Distance(C); if(a==b&&a==c&&c==b) return true; else return false;}int main(){ CPoint a,b,c,*p1,*p2,*p3; p1=&a; p2=&b; p3=&c; CTriangle t1(*p1,*p2,*p3); cout<<"第一个点a:"<<endl; a.input(); cout<<"第二个点b:"<<endl; b.input(); cout<<"第三个点c"<<endl; c.input(); cout<<"三角形的周长为:"<<t1.perimeter()<<endl; cout<<"三角形的面积为:"<<t1.area()<<endl; cout<<"该三角形"<<(t1.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl; cout<<"该三角形"<<(t1.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl;return 0;}