您的位置:首页 > 其它

第五周 【项目3-用多文件组织多个类的程序】

2015-04-07 21:38 330 查看
将项目2用“一个项目多个文件”的方式实现,其中两个类的声明放在同一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件

main.cpp

#include <iostream>
#include "calss.h"
using namespace std;

int main()
{
CPoint A,B,C;
CTriangle t1(A,B,C);
t1.setTriangle(A,B,C);
t1.calculate(A,B,C);
cout<<"其周长为:"<<t1.perimeter();
cout<<"面积为:"<<t1.area();
if(t1.isRightTriangle())cout<<"其是直角三角形"<<endl;
else cout<<"其不是三角形"<<endl;
if(t1.isIsoscelesTriangle())cout<<"其是等腰三角形"<<endl;
else cout<<"其不是等边三角形"<<endl;
return 0;
}


头文件 calss.h

#ifndef CALSS_H_INCLUDED
#define CALSS_H_INCLUDED
class CPoint
{
private:
double x;  // 横坐标
double y;  // 纵坐标
public:
CPoint(double xx=0,double yy=0);
double Distance1(CPoint p) const; //两点之间的距离(一点是当前点——想到this了吗?,另一点为p)
void input();  //以x,y 形式输入坐标点
};
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(); //是否为等腰三角形
void calculate(CPoint &X,CPoint &Y,CPoint &Z);
private:
CPoint A,B,C; //三顶点
double l1,l2,l3;//三条边
};

#endif // CALSS_H_INCLUDED
点类的函数定义 CPoint.cpp

#include <iostream>
using namespace std;
#include <cmath>
#include "calss.h"
CPoint::CPoint(double xx,double yy)
{
x=xx;
y=yy;
}
double CPoint::Distance1(CPoint p)const
{
return (sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y)));
}
void CPoint::input()
{
cin>>x>>y;
}


三角形类函数定义

CTrangle.cpp

#include <cmath>
#include "calss.h"
void  CTriangle::calculate(CPoint &X,CPoint &Y,CPoint &Z)
{
l1=X.Distance1(Y);
l2=Y.Distance1(Z);
l3=X.Distance1(Z);
}
bool CTriangle::isIsoscelesTriangle()
{
bool t=false;
if((l1==l2)||(l2==l3)||(l1==l3))
t=true;
return t;
}
bool CTriangle::isRightTriangle()
{
double l;
bool t=false;
if(l1<l2)
{
l=l1;
l1=l2;
l2=l;
}
if(l2<l3)
{
l=l2;
l2=l3;
l3=l;
}
if(l1<l2)
{
l=l1;
l1=l2;
l2=l;
}
if(l1*l1==l2*l2+l3*l3)
t=true ;
return t;

}
double CTriangle::area(void)
{
double p;
p=l1+l2+l3;
return(sqrt(p*(p-l1)*(p-l2)*(p-l3)));
}
double CTriangle::perimeter(void)
{
return (l1+l2+l3);
}
void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z)
{
X.input();
Y.input();
Z.input();
}


多文件组织对于大工程开发具有较便捷的功效,使得程序编写结构层次清晰,分工明确。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: