2012C++程序设计实验报告【6.5】
来源:互联网 发布:ug中心钻编程 编辑:程序博客网 时间:2024/05/29 15:31
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 关于三角形
* 作 者: 王琳
* 完成日期: 2012 年 03 月 28 日
* 版 本 号: 6-5
* 对任务及求解方法的描述部分
* 问题描述: 设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。
提示:(1)这个问题需要用到两个类,顶点类参照任务3中的CPoint类;(2)三角形类参考下面CTriangle类的声明;(3)充分利用CPoint类中已有的代码实现;(4)关于三条边的处理,可以增加三个私有属性,在初始化时求出来备用,也可以在需要时计算得到。
* 程序头部的注释结束
*/
源程序:
头文件CTriangle.h
class CPoint { private: double x; // 横坐标 double y; // 纵坐标 public: CPoint(double xx=0,double yy=0); double Distance(CPoint p) const; // 两点之间的距离 }; class CTriangle { public: CTriangle(CPoint &X,CPoint &Y,CPoint&Z):A(X),B(Y),C(Z){} //给出三点的构造函数 void setTriangle(CPoint &X,CPoint&Y,CPoint &Z);// double perimeter(void);//计算三角形的周长 double area(void);//计算并返回三角形的面积 bool isRightTriangle(); //是否为直角三角形 bool isIsoscelesTriangle(); //是否为等腰三角形 private: CPoint A,B,C; //三顶点 }; void CTriangle::setTriangle(CPoint &X,CPoint&Y,CPoint &Z) { A=X; B=Y; C=Z; } //计算三角形的周长 double CTriangle::perimeter(void) { double a=B.Distance(C),b=A.Distance(C),c=A.Distance(B); return (a+b+c); } //计算并返回三角形的面积 double CTriangle::area(void) { double a=B.Distance(C),b=A.Distance(C),c=A.Distance(B); double s=(a+b+c)/2; return sqrt(s*(s-a)*(s-b)*(s-c)); } //是否为直角三角形 bool CTriangle::isRightTriangle() { double a=B.Distance(C),b=A.Distance(C),c=A.Distance(B); if((abs(a*a+b*b-c*c)<1e-6)||(abs(a*a+c*c-b*b)<1e-6)||(abs(c*c+b*b-a*a)<1e-6)) return true; else return false; } //是否为等腰三角形 bool CTriangle::isIsoscelesTriangle() { double a=B.Distance(C),b=A.Distance(C),c=A.Distance(B); if((abs(a-b)<1e-6)||(abs(a-c)<1e-6)||(abs(b-c)<1e-6)) return true; else return false; } //构造函数初始化表 CPoint::CPoint(double xx,double yy):x(xx),y(yy){} // 求两点之间的距离 double CPoint::Distance(CPoint p) const { return sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y)); }
源程序:
#include<iostream>#include<cmath>#include"CTriangle.h" using namespace std; void main() { CTriangle tri1(CPoint(0,0),CPoint(4,0),CPoint(0,3)); cout<<"该三角形的周长为:"<<tri1.perimeter()<<endl<<endl; cout<<"该三角形的面积为:"<<tri1.area()<<endl<<endl<<endl; cout<<"该三角形"<<(tri1.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl<<endl; cout<<"该三角形"<<(tri1.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl; system("pause"); }
运行结果:
感想:头文件运用还是比较简单的,因为有上一个任务做铺垫,这一个任务显得容易些,其实还是应该尝试用不同的方法做题的!这样才能有提高!
- 第一次C程序设计实验报告
- 第二次C程序设计实验报告
- 第三次C程序设计实验报告
- 2012C++程序设计实验报告【6.5】
- C 程序设计实验报告(二)
- 第四次C程序设计实验报告
- 第五次C程序设计实验报告
- C程序设计课程-第七次实验报告
- c程序设计第七次上机实验报告
- 第七次C程序设计实验报告
- 第八次C程序设计实验报告
- 第九次C程序设计实验报告
- 第十次C程序设计实验报告
- 第十一次C程序设计实验报告
- 2012 C++程序设计实验报告(一)
- 2012C++程序设计实验报告【2.1】
- 2012C++程序设计实验报告【2.2】
- 2012C++程序设计实验报告【2.3】
- SGU 130 Circle
- struts2 报错:freemarker.log.JDK14LoggerFactory$JDK14Logger error
- endian
- Magento安装后无法访问,提示“Illegal scheme supplied, only alphanumeric characters are permitted”
- Access restriction: The type BASE64Encoder is not accessible due to restrict on required library
- 2012C++程序设计实验报告【6.5】
- Linux下递归打印一个文件夹下的所有文件夹和文件
- javascript的prototype继承
- struts2 validation error只出现在控制台中,但是input的页面中却没有显示
- IOS开发系列——xml文件解析
- pthread线程优先级的调度
- 关于VxWorks zbuf
- mini2440_NFS 利用uboot启动
- 第六周作业任务三