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
- 第六周项目二——对象作为数据成员
- C++项目——对象作为数据成员
- 第四周项目2——对象作为数据成员
- 第五周项目二——对象作为数据成员
- 第五周项目2——对象作为数据成员
- 第五周项目二——对象作为数据成员
- 第五周项目2——对象作为数据成员
- 项目2 - 对象作为数据成员
- 2014-项目二-对象作为数据成员
- 第五周项目:对象作为数据成员
- 项目二:对象作为数据成员
- 【项目2 - 对象作为数据成员】
- 第六周上机实践项目——对象作为数据成员
- 第六周(项目二)——对象作为数据成员。
- 第五周上机实践项目2——对象作为数据成员
- 第五周 课后实践:项目二——对象作为数据成员
- 第5周项目2——对象作为数据成员
- 第5周项目2-对象成员作为数据成员
- cocos2d-x 数据驱动的游戏开发
- Log4Net使用技巧
- cocos2d-x 3.1.1 step by step 学习笔记3 Win32平台下中文乱码问题
- HDU 1231 最大连续子序列 (动规)
- 申达股份电话发给健康就好了,看
- C++项目——对象作为数据成员
- 线段树扫描线的理解
- ACM模板 图论,Floyd 任意两点间最短路
- hoj 经理的烦恼
- Linux的文件系统
- 字符串长度处理
- 工作忙
- touch事件监听
- 修改ubuntu 14.04 中文版的默认中文字体