Unit6--problem3--二类共享
来源:互联网 发布:ug nx11编程新功能 编辑:程序博客网 时间:2024/06/18 12:41
/*Univercity:烟台大学*@Class</A>计134~4*@Author:薛富磊*@Time:2014-4-2*@Function:回想Engineer类的数据成员,有眼镜、背包等。某Engineer的眼镜、背包,是Glass、Bag类的对象。类中的数据成员,其类型可以是简单类型,也可以是类.通过这种方式,将某些类组合到另外的类中,当作其中的一个“部件”使用。本项目设计一个三角形类,其数据成员不再是三角形三条边的边长,而是三角形的三个顶点。利用设计的三角形类,输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。*@Args::(1)这个问题需要用到两个类,顶点类参照项目1中的CPoint类; (2)三角形类参考下面CTriangle类的声明; (3)充分利用CPoint类中已有的代码实现; (4)关于三条边的处理,可以增加三个私有属性,在初始化时求出来备用,也可以在需要时计算得到。*@Return:*/#include <iostream>#include<Cmath>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; // 两点之间的距离(一点是当前点,另一点为参数p) void input(); //以x,y 形式输入坐标点 void output(); //以(x,y) 形式输出坐标点};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) const{ return(sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y)));}void CPoint::input(){ char a,c,e; //double b,d; cout<<"输入点的坐标例如(7,7):"; while(1) { cin>>a>>x>>c>>y>>e; if(a!='('||c!=','||e!=')') { cout<<"重新输入例如(7,7):"; input();break; } else break; }}void CPoint::output(){ cout<<"("<<x<<","<<y<<")"<<endl;}void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z){ A=X; B=Y; C=Z;}float CTriangle::perimeter(void){ double a,b,c; a=A.Distance1(B); b=B.Distance1(C); c=A.Distance1(C); return (a+b+c);}float CTriangle::area(void){ double a,b,c,q; a=A.Distance1(B); b=B.Distance1(C); c=A.Distance1(C); q=(a+b+c)/2; return sqrt(q*(q-a)*(q-b)*(q-c));}bool CTriangle::isRightTriangle(){ double a,b,c; a=A.Distance1(B); b=B.Distance1(C); c=A.Distance1(C); if(a*a!=b*b+c*c||b*b!=a*a+c*c||c*c!=b*b+a*a) return true; else return false;}bool CTriangle::isIsoscelesTriangle(){ double a,b,c; a=A.Distance1(B); b=B.Distance1(C); c=A.Distance1(C); if(a==b||a==c||b==c) return true; else return false;}int main(){ CPoint a,b,c; cout<<"请输入三点坐标:"; a.input(); b.input(); c.input(); cout<<"坐标为:"; a.output(); b.output(); c.output(); CTriangle t(a,b,c); cout<<"三角形的周长:"<<t.perimeter()<<" "<<"面积:"<<t.area()<<endl; cout<<"该三角形:"; if(t.isRightTriangle()) cout<<"是直角三角形 "<<endl; else cout<<"不是直角三角形 "<<endl; if(t.isIsoscelesTriangle()) cout<<" 是等腰三角形"<<endl; else cout<<" 不是等腰三角形"<<endl; return 0;}/*心得体会: 设的bool类型 但写的过程中 忘啦!!!! 尽管结果不错 但是。。。。。。*/
0 0
- Unit6--problem3--二类共享
- unit6
- unit6
- Unit6
- Problem3
- Problem3
- linux unit6
- Unit6 文档
- unit6-nfs
- Linux Unit6
- Unit14-problem3-立体类族共有的抽象类
- snort problem3
- Problem3-1001
- Problem3-1002
- Problem3-1006
- Problem3-1004
- Problem3-1015
- Problem3-1014
- Button的使用(十):ImageButton
- 关于hibernate中对象的三种状态分析
- AWGN Channel
- java 函数传引用参数的理解
- ngnix hash的两个关键 : 预计算hash的元素个数 和 通配符存在时的建表
- Unit6--problem3--二类共享
- [转载]MAC OS X 安装完mysql后终端不识别mysql命令的解决办法
- IdeaCMS开源企业网站系统 v6.1.5(带数据)
- Hibernate乐观锁实现之Version
- wchar和char的转换
- Linux下高并发socket最大连接数所受的各种限制
- MATLAB的plot函数颜色和线型设定参数
- 第六周项目1-体验常成员函数
- 【游戏课】技术片段之——使用BillBoard技术进行快速绘制