第五周 课后实践:项目二——对象作为数据成员

来源:互联网 发布:安卓数独源码 编辑:程序博客网 时间:2024/06/16 06:23

问题及代码:

/** Copyright (c) 2014, 烟台大学计算机学院* All rights reserved.* 文件名称:Project4.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; //三顶点};CPoint::CPoint(double xx,double yy){    x=xx;    y=yy;}void CPoint::input(){  char n;  cout<<"请输入坐标点(格式x,y ):";  while(1)  {    cin>>x>>n>>y;    if (n==',') break;    cout<<"输入的数据格式不符合规范,请重新输入"<<endl;  }} void CPoint::output(){  cout<<"("<<x<<", "<<y<<")"<<endl;}double CPoint::Distance(CPoint p)const{    double d;    d=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));    return d;}void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z){    A=X;    B=Y;    C=Z;}float CTriangle::perimeter(void){    float a,b,c;    a=A.Distance(B);    b=B.Distance(C);    c=C.Distance(A);    return a+b+c;}float CTriangle::area(void){    float a,b,c;    a=A.Distance(B);    b=B.Distance(C);    c=C.Distance(A);    double p;    p=(a+b+c)/2;    return sqrt(p*(p-a)*(p-b)*(p-c));}bool CTriangle::isIsoscelesTriangle(){    float a,b,c;    a=A.Distance(B);    b=B.Distance(C);    c=C.Distance(A);    if(a==b||b==c||c==a)        return true;    else        return false;}bool CTriangle::isRightTriangle(){    float a,b,c;    a=A.Distance(B);    b=B.Distance(C);    c=C.Distance(A);    if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))        return true;    else        return false;}int main(){    CPoint X(2,6),Y(3,4),Z(5,6);    CTriangle c(X,Y,Z);    cout<<"该三角形的面积为:"<<c.area()<<endl;    cout<<"该三角形的周长为:"<<c.perimeter()<<endl;    if(c.isRightTriangle())        cout<<"该三角形是直角三角形。"<<endl;    else        cout<<"该三角形不是直角三角形。"<<endl;    if(c.isIsoscelesTriangle())        cout<<"该三角形是等腰三角形。"<<endl;    else        cout<<"该三角形不是等腰三角形。"<<endl;}


 

 

运行结果:

0 0