/* * 程序的版权和版本声明部分 * Copyright (c)2014, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称:a.cpp * 作 者:孔云 * 完成日期:2014年4月2日 * 版 本 号: v1.0 * 输入描述:三角形的三个顶点。 * 问题描述:建立一个项目多个文件,利用设计的三角形类,输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。 * 输出描述:面积、周长,并判断其是否为直角三角形和等腰三角形。 */
main.cpp用于定义主函数
#include <iostream> #include "class.h" using namespace std; int main() { CPoint a,b,c; CTriangle T(a,b,c); a.input(); a.output(); b.input(); b.output(); c.input(); c.output(); T.setTriagle(a,b,c); T.STriangle(); cout<<"三角形面积:"<<T.area()<<"周长:"<<T.permeter()<<endl; if(T.isTriangle()==true) { cout<<"三角形"<<endl; } else if(T.isRightTriangle()==true) { cout<<"直角三角形"<<endl; } else if(T.isIsoscelesTriangle()==true) { cout<<"等腰三角形"<<endl; } else if(T.isTriangle()==true&&T.isRightTriangle()==true&&T.isIsoscelesTriangle()==true) { cout<<"等腰直角三角形"<<endl; } else { cout<<"不存在三角形!"<<endl; } return 0; }
class.h用于放置两个类的声明
class CPoint { private: double x; // 横坐标 double y;// 纵坐标 public: CPoint(double xx=0,double yy=0) { x=xx; y=yy; }; double Distance1(CPoint p) const; void input(); void output(); }; class CTriangle { public: CTriangle(CPoint &x,CPoint &y,CPoint &z):a(x),b(y),c(z) {} //给出三点的构造函数 void setTriagle(CPoint &x,CPoint &y,CPoint &z); void STriangle();//给三边赋值 float permeter(void);//计算三角形的周长 float area(void);//计算并返回三角形的面积 bool isTriangle();//是否为三角形 bool isRightTriangle();//是否为直角三角形 bool isIsoscelesTriangle();//是否为等腰三角形 private: CPoint a,b,c;//三顶点 double aa,ab,ac;//三条边 };
cpoint.cpp用于放置CPoint类
#include <iostream> #include "class.h" #include <cmath> using namespace std; void CPoint::input() { cout<<"请输入坐标点:"<<endl; cin>>x>>y; } void CPoint::output() { cout<<"("<<x<<","<<y<<")"<<endl; } double CPoint::Distance1(CPoint p) const { double dx,dy; dx=p.x-x; dy=p.y-y; return(sqrt(dx*dx+dy*dy)); }
triangle.cpp用于放置CTriangle类
#include <cmath> #include "class.h" void CTriangle::setTriagle(CPoint &x,CPoint &y,CPoint &z) { a=x; b=y; c=z; } void CTriangle::STriangle() { aa=a.Distance1(b); ab=b.Distance1(c); ac=c.Distance1(a); } bool CTriangle::isTriangle() { if((ac<aa+ab)&&(aa<ab+ac)&&(ab<ac+aa))//三角形任意一边小于两边之和 { return true; } else { return false; } } bool CTriangle::isRightTriangle() { if(aa*aa==ab*ab+ac*ac||ab*ab==ac*ac+aa*aa||ac*ac==aa*aa+ab*ab) { return true; } else { return false; } } bool CTriangle::isIsoscelesTriangle() { if(aa==ab||aa==ac||ab==ac) { return true; } else { return false; } } float CTriangle::permeter() { return (aa+ab+ac); } float CTriangle::area() { double d; d=(aa+ab+ac)/2; return (sqrt(d*(d-aa)*(d-ab)*(d-ac))); }
心得体会:一个项目多个文件的实现,如此安排体会到了将编写的程序模块化,程序的凝聚力和运行效率,嘿嘿