第六周任务五(由点表示的三角形类用多个文件的方式实现)
2012-03-28 17:54
375 查看
将任务4的解决用一个项目多个文件的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优点。 /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * 文件名称: 由点表示的三角形类 * 作 者: 计114-4冯珍珍 * 完成日期: 2012年 3 月 26 日 * 版 本 号: V 1.0 * 对任务及求解方法的描述部分 * 输入描述: 输入三角形的三个顶点 * 问题描述: (1)这个问题需要用到两个类,顶点类参照任务3中的CPoint类; (2)三角形类参考下面CTriangle类的声明; (3)充分利用CPoint类中已有的代码实现; (4)关于三条边的处理,可以增加三个私有属性,在初始化时求出来备用,也可以在需要时计算得到。 * 程序输出: 求出其面积、周长,并判断其是否为直角三角形和等腰三角形。 * 程序头部的注释结束 */ //c.h 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.cpp #include<iostream> #include"c.h" using namespace std; 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)); } //CTriangle.cpp #include"c.h" 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; } //main.cpp 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"); }
小结:用多文件处理项目易于修改,操作方便,思路清晰,但注意cpp文件中要包含调用的文件,不能把接口忘了
相关文章推荐
- 《C++第六周实验报告5-1》---将任务4的解决用一个项目多个文件的方式实现
- 第六周任务四(由点表示的三角形类)
- spring中通过配置文件方式实现定时任务
- C++第六周任务5:解决用一个项目多个文件的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优点。
- 第六周任务五。多文件组织三角形类
- spring和quartz整合实现定时任务(配置文件配置方式
- 将任务4的解决用一个项目多个文件的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。
- 练习2-1 编写一个程序一确定分别由signed及unsigned限定的char,short,int及long类型变量的取值范围。采用打印标准头文件中的相应值以及直接计算两种方式实现。通过直接计算来确定浮点类型的取值范围是一项难度很大的任务。
- springmvc实现文件上传的两种方式
- 利用windows计划任务实现定时运行ASP文件代码
- OAF_文件系列12_实现OAF导出PDF方式TemplateHelper
- 域环境下的通过DFS复制实现文件的网络冗余【网络存储新方式】
- 几种读取属性文件的JAVA实现方式
- 第6周-任务5-多文件组织三角形类
- SpringBoot 简单文件上传实现以及jar包方式运行项目
- Spring整理12 -- 面对切面(AOP)2 -- 配置文件的方式实现AOP
- 第六周任务四设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。
- 通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件
- Android学习笔记之AsyncTask实现文件下载任务
- 两种方式(系统调用、映射)实现文件的创建、移动、合并