第五周——多文件组织多各类——三角形类
来源:互联网 发布:mac 桌面下方出现白条 编辑:程序博客网 时间:2024/06/11 09:59
问题及代码:
主函数:
/*.*Copyright (c) 2014,烟台大学计算机学院*All rights reserved.*文件名称:Lily.cpp*作者:李莉*完成日期:2015年4月6日*版本号:v1.0**问题描述: 回想Engineer类的数据成员,有眼镜、背包等。某Engineer的眼镜、背包,是Glass、Bag类的对象。类中的数据成员,其类型可以是简单类型,也可以是类。通过这种方式,将某些类组合到另外的类中,当作其中的一个“部件”使用。本项目设计一个三角形类,其数据成员不再是三角形三条边的边长,而是三角形的三个顶点。利用设计的三角形类,输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。提示:(1)这个问题需要用到两个类,顶点类参照项目1中的CPoint类;(2)三角形类参考下面CTriangle类的声明;(3)充分利用CPoint类中已有的代码实现;(4)关于三条边长的处理,可以增加三个私有属性,在初始化时求出来备用。当然,也可以在需要用到时再计算。*程序输入:三个点的坐标*程序输出:*/#include <iostream>#include <cmath>#include "five.h"using namespace std;int main(){ Cpoint X,Y,Z; cout<<"请输入第一个点的坐标:"<<endl; X.input(); cout<<"请输入第二个点的坐标:"<<endl; Y.input(); cout<<"请输入第三个点的坐标:"<<endl; Z.input(); Triangle tr(X,Y,Z); cout<<"三角形的面积为:"<<tr.area()<<endl; cout<<"三角形的周长为:"<<tr.perimeter()<<endl; cout<<"三角形"<<(tr.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl; cout<<"三角形"<<(tr.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl; return 0;}
头文件函数:
#ifndef FIVE_H_INCLUDED#define FIVE_H_INCLUDEDclass Cpoint{private: double x; double y;public: Cpoint (double xx=0,double yy=0); double Distance(Cpoint p)const; void input(); void output();};class Triangle{public: Triangle(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; //三顶点};#endif // FIVE_H_INCLUDED
源文件函数:
#include <iostream>#include <cmath>#include "five.h"using namespace std;Cpoint::Cpoint(double xx,double yy){ x=xx; y=yy;}void Cpoint::input(){ cin>>x>>y;}void Cpoint::output(){ cout<<"("<<x<<","<<y<<")"<<endl;}double Cpoint::Distance(Cpoint p)const{ double d; d=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y)); return d;}void Triangle::setTriangle(Cpoint &X,Cpoint &Y,Cpoint &Z){ A=X; B=Y; C=Z;}float Triangle::perimeter(void){ double a,b,c; a=A.Distance(B); b=B.Distance(C); c=C.Distance(A); return (a+b+c);}float Triangle::area(void){ double a=B.Distance(C),b=C.Distance(A),c=A.Distance(B); double s = (a + b + c) / 2; return sqrt(s * (s - a) * (s - b) * (s - c));}bool Triangle::isRightTriangle(){ double a=B.Distance(C),b=C.Distance(A),c=A.Distance(B); double max=a; if(max<b) { max=b; } if(max<c) { max=c; } if(((max==a)&&(abs(a*a-b*b-c*c)<1e-7))||((max==b)&&(abs(b*b-a*a-c*c)<1e-7))||((max==c)&&(abs(c*c-b*b-a*a)<1e-7))) { return true; } else return false;}bool Triangle::isIsoscelesTriangle(){ double a=B.Distance(C),b=C.Distance(A),c=A.Distance(B); if((abs(a-b)<1e-7)||(abs(b-c)<1e-7)||(abs(c-a)<1e-7)) { return true; } else return false;}
运行结果:
心得体会:
多文件组织bingo!!
0 0
- 第五周——多文件组织多各类——三角形类
- 第六周—多文件组织三角形类
- 第四周——多文件组织三角形类
- 第三周——基于对象的程序设计——三角形类(3)多文件组织
- 多文件组织---三角形类
- 第五周项目三 对象作数据成员之三角形顶点类----多文件组织
- C++找对象的季节——三角形类(内置函数+多文件组织)
- 第五周—1.2三角形类
- 第五周—1.3三角形类
- 第五周上机实践项目3——用多文件组织多个类的程序
- 15第五周项目三——用多文件组织多个类的程序
- 第五周项目三——用多文件组织多个类的程序
- 第五周 课后实践:项目三——用多文件组织多个类的程序
- 第五周项目3——用多文件组织多个类的程序
- 第五周项目三——用多文件组织多个类的程序
- 第五周 课后实践:项目四——用多文件组织多个类的程序
- 第五周项目3——用多文件组织多个类的程序
- C++找对象的季节——三角形类第三弹(对象做数据成员+多文件组织)
- 【哈希表】Longest Consecutive Sequence
- clang: error: linker command failed with exit code 1 (use -v to see invocati
- Emacs key-bindings for mac
- 第5周项目多文件组织
- python高级函数map/reduce
- 第五周——多文件组织多各类——三角形类
- String to Integer (atoi)--LeetCode
- Fukushima Nuclear Blast - UVa 11978 求圆和多边形面积的并
- oracle学习之bulk collect用法
- 第五周 阅读程序(2)
- 生成PowerDesigner16.5设计图大图片的方法
- Linux常用Terminal命令与快捷键
- 更新php的版本
- 4月风怒(2)