第五周项目3:用多文件组织多个类的程序
2015-04-09 14:57
316 查看
问题及代码:
将项目2用“一个项目多个文件”的方式实现,其中两个类的声明放在同一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优点
head.h
CPoint.cpp
CTriangle.cpp
main.cpp;
知识点总结:
利用多文件组织,能够使程序检查更加方便,能够更加快捷的进行程序的检查与操作。
不至于几百行的程序,从头翻到尾,找自己所需要的那段代码都得费时费眼
将项目2用“一个项目多个文件”的方式实现,其中两个类的声明放在同一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优点
head.h
#ifndef HEAD_H_INCLUDED #define HEAD_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 形式输入坐标点 void output(); //以(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(); //是否为等腰三角形 private: CPoint A,B,C; //三顶点 }; #endif // HEAD_H_INCLUDED
CPoint.cpp
#include<iostream> #include<cmath> #include"head.h" using namespace std; CPoint::CPoint(double xx,double yy) { x=xx; y=yy; } double CPoint::distance1(CPoint p) const //两点之间的距离(一点是当前点——想到this了吗?,另一点为p) { double d=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y)); return d; } void CPoint::input() //以x,y 形式输入坐标点 { char ch; cout<<"请按正确格式输入坐标(x,y):"; cin>>x>>ch>>y; while(ch!=',') { cout<<"输入格式不正确,请重新输入:"; cin>>x>>ch>>y; } } void CPoint::output() //以(x,y) 形式输出坐标点 { cout<<'('<<x<<','<<y<<')'; }
CTriangle.cpp
#include<cmath> #include"head.h" using namespace std; void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z)// { A=X; B=Y; C=Z; } double CTriangle::perimeter(void)//计算三角形的周长 { double a=B.distance1(C),b=C.distance1(A),c=A.distance1(B); return (a+b+c); } double CTriangle::area(void)//计算并返回三角形的面积 { double a=B.distance1(C),b=C.distance1(A),c=A.distance1(B); double p=(a+b+c)/2; return sqrt(p*(p-a)*(p-b)*(p-c)); } bool CTriangle::isRightTriangle()//是否为直角三角形 { double a=B.distance1(C),b=C.distance1(A),c=A.distance1(B); if((abs(a*a-b*b-c*c)<1e-7)||(abs(b*b-a*a-c*c)<1e-7)||(abs(c*c-b*b-a*a)<1e-7)) return true; else return false; } bool CTriangle::isIsoscelesTriangle() //是否为等腰三角形 { double a=B.distance1(C),b=C.distance1(A),c=A.distance1(B); if((abs(a-b)<1e-7)||(abs(b-c)<1e-7)||(abs(c-a)<1e-7)) return true; else return false; }
main.cpp;
#include<iostream> #include"head.h" using namespace std; int main() { CPoint x(0,0),y(4,0),z; cout<<"z点;"; z.input(); CTriangle Tri(x,y,z); cout<<"该三角形的三点坐标分别为:"<<endl; x.output(); y.output(); z.output(); cout<<endl; cout<<"该三角形的周长为:"<<Tri.perimeter()<<",面积为:"<<Tri.area()<<endl; cout<<"该三角形"<<(Tri.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl; cout<<"该三角形"<<(Tri.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl; return 0; }
知识点总结:
利用多文件组织,能够使程序检查更加方便,能够更加快捷的进行程序的检查与操作。
不至于几百行的程序,从头翻到尾,找自己所需要的那段代码都得费时费眼
相关文章推荐
- 15第五周项目三——用多文件组织多个类的程序
- 第五周上机实践项目3——用多文件组织多个类的程序
- 第五周 项目3-用多文件组织多个类的程序
- 第五周 课后实践:项目三——用多文件组织多个类的程序
- 第五周项目:用多文件组织多个类的程序
- 第五周项目3-用多文件组织多个类的程序
- 第五周项目3-用多文件组织多个类的程序
- 第五周项目三——用多文件组织多个类的程序
- 第五周项目3——用多文件组织多个类的程序
- 第五周 项目三--用多文件组织多个类的程序
- 第五周项目三---多文件组织多个类的程序
- 第五周项目三:用多文件组织多个类程序
- 第五周项目3 用文件组织多个类的程序
- 第五周上机项目3 用多文件组织多个类的程序
- 2015年第五周项目三:用多文件组织多个类的程序
- 第五周项目三——用多文件组织多个类的程序
- 第五周 【项目2 - 对象作为数据成员】和【项目3-用多文件组织多个类的程序】
- 第五周 【项目3-用多文件组织多个类的程序】
- 第五周项目3 用多文件组织多个类的程序
- 第五周项目3-用多文件组织多个类的程序