第六周任务四(由点表示的三角形类)
2012-03-27 21:07
295 查看
#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 setCTriangle(Cpoint &x,Cpoint &y,Cpoint &z); double perimeter(void);//求三角形的周长 double 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 ch; while(1) { cin>>x>>ch>>y; if(ch!=',') cout<<"格式出现错误!"<<endl; else break; } } void Cpoint::output() { cout<<"("<<x<<','<<y<<")"<<endl; } double Cpoint::distance(Cpoint p) const { return sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)); } void CTriangle::setCTriangle(Cpoint &x,Cpoint &y,Cpoint &z) { A=x; B=y; C=z; } double CTriangle::perimeter(void)//求周长 { double a=B.distance(C),b=C.distance(A),c=A.distance(B); return (a+b+c); } double CTriangle::area(void)//求面积 { double a=B.distance(C),b=C.distance(A),c=A.distance(B); double p=(a+b+c)/2; return sqrt(p*(p-a)*(p-b)*(p-c)); } bool CTriangle::isRightTriangle() { double a=B.distance(C),b=C.distance(A),c=A.distance(B); if(abs(a*a+b*b-c*c)<(1e-6)||abs(c*c+b*b-a*a)<(1e-6)||abs(a*a+c*c-b*b)<(1e-6)) return true; else return false; } bool CTriangle::isIsoscelesTriangle() { double a=B.distance(C),b=C.distance(A),c=A.distance(B); if((abs(a-b)<1e-6)||(abs(b-c)<1e-6)||(abs(c-a)<1e-6)) return true; else return false; } void main(void) { CTriangle Tri1(Cpoint(6,0),Cpoint(0,0),Cpoint(0,4)); //定义三角形类的一个实例(对象) cout<<"该三角形的周长为:"<<Tri1.perimeter()<<",面积为:"<<Tri1.area()<<endl<<endl; cout<<"该三角形"<<(Tri1.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl; cout<<"该三角形"<<(Tri1.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl; system("pause"); }
问题:为什么当设置短距离点时,不能正确判断是否是等腰三角形?例如(1,0)(0,0)(0,2)
小结:distance(Cpoint p) const 这一函数失球两点间距离的函数,把类的一个对象做为函数的参数,是类的独特用法,把两个不同对象
相关文章推荐
- 第六周任务五(由点表示的三角形类用多个文件的方式实现)
- 第六周上机任务项目4-三角形类(修改版)
- 第六周任务四 坐标 三角形
- 2013第六周上机任务【项目4 三角形类】
- 第六周任务4(三角形类)
- 第六周任务5(判断三角形是什么三角形)
- 第六周任务4:三角形类
- 第六周实验报告(任务四)【三角形类】
- 第六周任务五。多文件组织三角形类
- 第六周任务四设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。
- 第六周任务4:三角形“类”的新做法
- 第六周实验指导--任务四--设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长。
- 第六周实验指导--任务五--设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长。
- 第六周上机任务项目4-三角形类
- C++第六周任务4设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。
- 第六周实验报告 任务4 设计一个三角形类 输入三角形的三个顶点 求面积周长
- 第六周任务四。用三角形的三个顶点 求出其面积 周长
- 第六周上机任务项目2 程序填空
- 十五周任务1:窗口启蒙(计算三角形周长和面积)
- 第六周任务二A