第06周:项目二:对象作为数据成员

来源:互联网 发布:数据拟合方法 编辑:程序博客网 时间:2024/05/21 10:14
/** Copyright (c) 2014, 烟台大学计算机学院* All rights reserved.* 作    者:王颖* 完成日期:2014 年 4 月 4 日* 版 本 号:v1.0* 输入描述: 无* 问题描述:对象作为数据成员* 回想Engineer类的数据成员,有眼镜、背包等。某Engineer的眼镜、* 背包,是Glass、Bag类的对象。类中的数据成员,其类型可以是简* 单类型,也可以是类。通过这种方式,将某些类组合到另外的类中* ,当作其中的一个“部件”使用。* 本项目设计一个三角形类,其数据成员不再是三角形三条边的边长* ,而是三角形的三个顶点。利用设计的三角形类,输入三角形的三个顶* 点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。*  提示:(1)这个问题需要用到两个类,顶点类参照项目1中的* CPoint类;(2)三角形类参考下面CTriangle类的声明;(3)充分利* 用CPoint类中已有的代码实现;(4)关于三条边的处理,可以增加三* 个私有属性,在初始化时求出来备用,也可以在需要时计算得到。* 程序输出:略* 问题分析:略* 算法设计:略*/#include <iostream>#include<cmath>using namespace std;class CPoint{private:    double x;  // 横坐标    double y;  // 纵坐标public:    CPoint(double xx=0,double yy=0);    double distance1(CPoint p);};CPoint::CPoint(double xx,double yy){    x=xx;    y=yy;}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::distance1(CPoint p) {     double d;     d=sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));     return d; }  void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z) {     A=X;     B=Y;     C=Z; } float CTriangle::perimeter(void) {     CPoint t;     double d;     d=B.distance1(A)+A.distance1(C)+C.distance1(B);     return d; } float CTriangle::area(void) {     CPoint q;     double p,s,a=0,b=0,c=0;     a=C.distance1(B);     b=A.distance1(C);     c=B.distance1(A);     p=(a+b+c)/2;     s=sqrt(p*(p-a)*(p-b)*(p-c));     return s; } bool CTriangle::isRightTriangle() //是否为直角三角形 {     CPoint t;     double a=0,b=0,c=0;     a=C.distance1(B);     b=A.distance1(C);     c=B.distance1(A);     bool flag=false;     if(((a*a+b*b)==c*c)||((a*a+c*c)==b*b)||((b*b+c*c)==a*a))     {              flag=true;     }     return flag; }   bool CTriangle::isIsoscelesTriangle() //是否为等腰三角形   {       CPoint t;       bool flag=false;       if(B.distance1(A)==A.distance1(C)||A.distance1(B)==B.distance1(C)||C.distance1(A)==C.distance1(B))   flag=true;   return flag;   }int main(){    CPoint X(4,5),Y(1,3),Z(6,8);     CTriangle s(X,Y,Z);    cout<<"三角形的周长为:"<<s.perimeter()<<"三角形的面积为:"<<s.area()<<endl;    cout<<"三角形"<<(s.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl;    cout<<"三角形"<<(s.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl;    return 0;}


心得体会:加油

0 0
原创粉丝点击