C++项目——对象作为数据成员

来源:互联网 发布:淘宝网怎么打好评 编辑:程序博客网 时间:2024/05/21 21:50
本项目设计一个三角形类,其数据成员不再是三角形三条边的边长,而是三角形的三个顶点。利用设计的三角形类,输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。

  提示:(1)这个问题需要用到两个类,顶点类参照项目1中的CPoint类;(2)三角形类参考下面CTriangle类的声明;(3)充分利用CPoint类中已有的代码实现;(4)关于三条边的处理,可以增加三个私有属性,在初始化时求出来备用,也可以在需要时计算得到。

#include<iostream>#include<math.h>using namespace std;class CPoint{public:CPoint(float x,float y):xpoint(x),ypoint(y){}float pointdistance(CPoint p) const;float outputX() const;float outputY() const;private:float xpoint;float ypoint;};float CPoint::pointdistance(CPoint p) const{return sqrt(pow((p.xpoint-xpoint),2)+pow((p.ypoint-ypoint),2));}float CPoint::outputX() const{return xpoint;}float CPoint::outputY() const{return ypoint;}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;cout<<"A: ("<<A.outputX()<<","<<A.outputY()<<")"<<endl;cout<<"B: ("<<B.outputX()<<","<<B.outputY()<<")"<<endl;cout<<"C: ("<<C.outputX()<<","<<C.outputY()<<")"<<endl;}float CTriangle::perimeter(void){float c=0;c=A.pointdistance(B)+A.pointdistance(C)+B.pointdistance(C);return c;}float CTriangle::area(void){float p,s;p=(A.pointdistance(B)+A.pointdistance(C)+B.pointdistance(C))/2;s=sqrt(p*(p-A.pointdistance(B))*(p-A.pointdistance(C))*(p-B.pointdistance(C)));return s;}bool CTriangle::isRightTriangle(){float max,min[2],temp;temp=(A.pointdistance(B)>A.pointdistance(C))?A.pointdistance(B):A.pointdistance(C);min[0]=(A.pointdistance(B)>A.pointdistance(C))?A.pointdistance(C):A.pointdistance(B);max=(temp>B.pointdistance(C))?temp:B.pointdistance(C);min[1]=(temp>B.pointdistance(C))?B.pointdistance(C):temp;if(pow(max,2)-(pow(min[0],2)+pow(min[1],2))<1e-7)return true;else return false;}bool CTriangle::isIsoscelesTriangle(){if((A.pointdistance(B)==A.pointdistance(C))||(A.pointdistance(B)==B.pointdistance(C))||(A.pointdistance(C)==B.pointdistance(C)))return true;else return false;}void main(){CPoint X(0,0),Y(1,0),Z(0,1);CTriangle ct(X,Y,Z);ct.setTriangle(X,Y,Z);cout<<"output the perimeter of this triangle: c="<<ct.perimeter()<<endl;cout<<"output the area of this triangle: s="<<ct.area()<<endl;cout<<"the triangle is righttriangle: yes/no(1/0): "<<ct.isRightTriangle()<<endl;cout<<"the triangle is oscelestriangle: yes/no(1/0): "<<ct.isIsoscelesTriangle()<<endl;}


0 0
原创粉丝点击