第六周 项目四:三角形类(判断是不是等腰或直角)

来源:互联网 发布:淘宝下单未付款 排名 编辑:程序博客网 时间:2024/05/20 04:49
/** 程序的版权和版本声明部分* Copyright (c)2012, 烟台大学计算机学院学生* All rightsreserved.* 文件名称: object.cpp* 作者:    李洋* 完成日期: 2013年 4 月 7 日* 版本号: 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;   // 两点之间的距离(一点是当前点,另一点为参数p)void input();  //以x,y 形式输入坐标点};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; //三顶点};CPoint::CPoint(double xx,double yy){x=xx;y=yy;}void CPoint::input(){char a;cout<<"请输入坐标点(格式为x,y ):";while(1){cin>>x>>a>>y;if(a==',') break;cout<<"输入的数据格式不符合规范,请重新输入";}}double CPoint::distance(CPoint p) const{return (sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y)));}void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z){A=X;B=Y;C=Z;}float CTriangle::perimeter(void){return (A.distance(B)+B.distance(C)+C.distance(A));}float CTriangle::area(void){double a=B.distance(C),b=C.distance(A),c=A.distance(B);double s=(a+b+c)/2;return sqrt(s*(s-a)*(s-b)*(s-c));}bool CTriangle::isRightTriangle(){double  a=B.distance(C),b=C.distance(A),c=A.distance(B);      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=B.distance(C),b=C.distance(A),c=A.distance(B);if(a==b||a==c||b==c)return true;elsereturn false;}int main(){CPoint X,Y,Z;CTriangle p(X,Y,Z);cout<<"点X,";X.input();cout<<"点Y,";Y.input();cout<<"点Z,";Z.input();p.setTriangle(X,Y,Z);cout<<"该三角形的周长为:"<<p.perimeter()<<endl;cout<<"该三角形的面积为:"<<p.area()<<endl;cout<<"该三角形"<<(p.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl;    cout<<"该三角形"<<(p.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl;    return 0;}

原创粉丝点击