第五周项目二:对象作为数据成员的三角形类
2015-04-07 19:43
393 查看
【项目2 - 对象作为数据成员】
本项目设计一个三角形类,其数据成员不再是三角形三条边的边长,而是三角形的三个顶点。利用设计的三角形类,输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。
提示代码:
解决代码:
运行结果:
学习总结:对象作为数据成员,学到新技能了!
【项目2 - 对象作为数据成员】
本项目设计一个三角形类,其数据成员不再是三角形三条边的边长,而是三角形的三个顶点。利用设计的三角形类,输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。
提示代码:
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; //三顶点 };
解决代码:
#include <iostream> #include <cmath> #include <iomanip> #include <cstdio> using namespace std; class CPoint { private: double x; // 横坐标 double y; // 纵坐标 public: CPoint (double xx=0,double yy=0):x(xx),y(yy) {}; double Distance1(CPoint p) const; void input(); }; void CPoint:: input() { char ch; cout<<"(格式x,y )"; while(1) { cin>>x; ch=getchar(); cin>>y; if (ch==',') break; cout<<"输入的数据格式不符合规范,请重新输入\n"; fflush(stdin); //清空缓存区,以便下一循环完全接受新输入 } } double CPoint::Distance1(CPoint p) const { double d; cout<<setiosflags(ios::fixed)<<setprecision(1); d=sqrt((this->x-p.x)*(this->x-p.x)+(this->y-p.y)*(this->y-p.y)); return d; } class CTriangle { public: CTriangle(CPoint &X,CPoint &Y,CPoint &Z):A(X),B(Y),C(Z) {} //给出三点的构造函数 void setTriangle(CPoint &X,CPoint &Y,CPoint &Z);// void caculate(CPoint &X,CPoint &Y,CPoint &Z);//计算三角形三边长 float perimeter(void);//计算三角形的周长 float area(void);//计算并返回三角形的面积 bool isRightTriangle(); //是否为直角三角形 bool isIsoscelesTriangle();//是否为等腰三角形 private: CPoint A,B,C; //三顶点 double a,b,c;//三边长 }; void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z) { A=X; B=Y; C=Z; } void CTriangle::caculate(CPoint &X,CPoint &Y,CPoint &Z) { a=A.Distance1(B); b=A.Distance1(C); c=B.Distance1(C); cout<<"该三角形的三边长分别为:"<<a<<","<<b<<","<<c<<endl; } float CTriangle::perimeter(void) { return a+b+c; } float CTriangle::area(void) { double s=(a+b+c)/2; return sqrt(s*(s-a)*(s-b)*(s-c)); } bool CTriangle::isRightTriangle() { if((abs(c*c-a*a-b*b)<1e-7)||(abs(a*a-b*b-c*c)<1e-7)||(abs(b*b-a*a-c*c)<1e-7)) return (1); else return (0); } bool CTriangle::isIsoscelesTriangle() { if((abs(a-b)<1e-7)&&(abs(c-b)<1e-7)&&(abs(a-c)<1e-7)) return (1); else return (0); } int main() { CPoint X,Y,Z; cout<<"请输入顶点A:"; X.input(); cout<<"请输入顶点B:"; Y.input(); cout<<"请输入顶点C:"; Z.input(); CTriangle ctr(X,Y,Z); ctr.caculate(X,Y,Z); cout<<"三角形的周长是:"<<ctr.perimeter()<<endl; cout<<"三角形的面积是:"<<ctr.area()<<endl; if(ctr.isRightTriangle()) cout<<"该三角形是直角三角形"<<endl; else cout<<"该三角形不是直角三角形"<<endl; if(ctr.isIsoscelesTriangle()) cout<<"该三角形是等边三角形"<<endl; else cout<<"该三角形不是等边三角形"<<endl; return 0; }
运行结果:
学习总结:对象作为数据成员,学到新技能了!
相关文章推荐
- 第五周项目二 对象作为数据成员 之 三角形已知三个顶点---两个类问题
- 第五周上机实践项目2-对象作为数据成员
- 第五周项目2 - 对象作为数据成员
- 第五周 项目2-对象作为数据成员
- 第五周项目:对象作为数据成员
- 第五周 项目2-对象作为数据成员
- 第五周 项目二 对象作为数据成员
- 第五周项目二之对象作为数据成员
- 第五周上机实践项目2——对象作为数据成员
- 第五周上机项目2对象作为数据成员
- 2015年第五周项目二:对象作为数据成员
- 第五周 【项目2 - 对象作为数据成员】和【项目3-用多文件组织多个类的程序】
- 第4周-项目2-对象作为数据成员-三角形类
- 第五周项目二——对象作为数据成员
- 第五周项目二 对象作为数据成员
- 第五周项目二:对象作为数据成员
- 第五周项目2 对象作为数据成员
- 第五周项目二对象作为数据成员
- 第五周项目2——对象作为数据成员
- 第五周 项目二 对象作为数据成员