第06周:项目二:对象作为数据成员
来源:互联网 发布:数据拟合方法 编辑:程序博客网 时间:2024/05/21 10:14
/** Copyright (c) 2014, 烟台大学计算机学院* All rights reserved.* 作 者:王颖* 完成日期:2014 年 4 月 4 日* 版 本 号:v1.0* 输入描述: 无* 问题描述:对象作为数据成员* 回想Engineer类的数据成员,有眼镜、背包等。某Engineer的眼镜、* 背包,是Glass、Bag类的对象。类中的数据成员,其类型可以是简* 单类型,也可以是类。通过这种方式,将某些类组合到另外的类中* ,当作其中的一个“部件”使用。* 本项目设计一个三角形类,其数据成员不再是三角形三条边的边长* ,而是三角形的三个顶点。利用设计的三角形类,输入三角形的三个顶* 点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。* 提示:(1)这个问题需要用到两个类,顶点类参照项目1中的* CPoint类;(2)三角形类参考下面CTriangle类的声明;(3)充分利* 用CPoint类中已有的代码实现;(4)关于三条边的处理,可以增加三* 个私有属性,在初始化时求出来备用,也可以在需要时计算得到。* 程序输出:略* 问题分析:略* 算法设计:略*/#include <iostream>#include<cmath>using namespace std;class CPoint{private: double x; // 横坐标 double y; // 纵坐标public: CPoint(double xx=0,double yy=0); double distance1(CPoint p);};CPoint::CPoint(double xx,double yy){ x=xx; y=yy;}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) { double d; d=sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)); return d; } void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z) { A=X; B=Y; C=Z; } float CTriangle::perimeter(void) { CPoint t; double d; d=B.distance1(A)+A.distance1(C)+C.distance1(B); return d; } float CTriangle::area(void) { CPoint q; double p,s,a=0,b=0,c=0; a=C.distance1(B); b=A.distance1(C); c=B.distance1(A); p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); return s; } bool CTriangle::isRightTriangle() //是否为直角三角形 { CPoint t; double a=0,b=0,c=0; a=C.distance1(B); b=A.distance1(C); c=B.distance1(A); bool flag=false; if(((a*a+b*b)==c*c)||((a*a+c*c)==b*b)||((b*b+c*c)==a*a)) { flag=true; } return flag; } bool CTriangle::isIsoscelesTriangle() //是否为等腰三角形 { CPoint t; bool flag=false; if(B.distance1(A)==A.distance1(C)||A.distance1(B)==B.distance1(C)||C.distance1(A)==C.distance1(B)) flag=true; return flag; }int main(){ CPoint X(4,5),Y(1,3),Z(6,8); CTriangle s(X,Y,Z); cout<<"三角形的周长为:"<<s.perimeter()<<"三角形的面积为:"<<s.area()<<endl; cout<<"三角形"<<(s.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl; cout<<"三角形"<<(s.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl; return 0;}
心得体会:加油
0 0
- 第06周:项目二:对象作为数据成员
- 第四周 项目二:对象作为数据成员
- 第5周项目2-对象成员作为数据成员
- 第5周项目2-对象成员作为数据成员
- 第5周项目【项目2 - 对象作为数据成员】
- 2014-项目二-对象作为数据成员
- 项目二:对象作为数据成员
- 第5周项目2对象作为数据成员
- 第5周项目2对象作为数据成员
- 第4周项目3-对象作为数据成员
- 2015-第5周项目2-对象作为数据成员
- 第5周项目2-对象作为数据成员
- 第5周项目2-对象作为数据成员
- 第5周项目2对象作为数据成员
- 第5周项目2 对象作为数据成员
- 第六周项目二——对象作为数据成员
- 第六周项目二对象作为数据成员
- 第六周项目二对象作为数据成员
- 浅谈多线程
- HDU 1251(字典树)
- 全排列之hash
- 第06周:项目一:体验常成员函数
- 全排列的实现
- 第06周:项目二:对象作为数据成员
- 折半查找法
- 初学opencv,转化成灰度、检测人脸并切割出人脸保存
- 清明节有哪些习俗。
- OpenCV图像处理->鼠标移动区域放大
- 面试题三 二维数组中的查找
- C语言的预处理、编译、汇编、链接
- Chef and Digits
- 第06周:项目三:多文件组织