/*
* 程序的版权和版本声明部分
* 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)));
}
心得体会:一个项目多个文件的实现,如此安排体会到了将编写的程序模块化,程序的凝聚力和运行效率,嘿嘿