第五周上机实践项目3-用多文件组织多个类的程序

来源:互联网 发布:手机淘宝直通车位置 编辑:程序博客网 时间:2024/06/07 04:06

/* *Copyright(c)2014,烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作者:满星辰 *完成日期:2015年 4月 7日 *版本号:v1.0 *问题描述:将项目2用“一个项目多个文件”的方式实现,其中两个类的声明放在同一个.h文件中,            每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优点。 *输入描述: *程序输出: */

main.cpp

#include <iostream>#include <cmath>#include "triangle.h"#include "point.h"using namespace std;int main(){    CPoint c1(3,5),c2(2,8),c3(4,6);    CTriangle triangle(c1,c2,c3);    cout<<"三角形三点的坐标分别为:"<<endl;    c1.output();    c2.output();    c3.output();    cout<<"该三角形的周长:"<<triangle.perimeter()<<endl;    cout<<"该三角形的面积:"<<triangle.area()<<endl;    cout<<"该三角形"<<(triangle.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl;    cout<<"该三角形"<<(triangle.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl;    return 0;}

point.h

#ifndef POINT_H_INCLUDED#define POINT_H_INCLUDED#include <iostream>#include <cmath>using namespace std;class CPoint{private:    double x;  // 横坐标    double y;  // 纵坐标public:    CPoint(double xx=0,double yy=0):x(xx),y(yy) {};    double Distance1(CPoint p) const //两点之间的距离(一点是当前点——想到this了吗?,另一点为p)    {        return sqrt(((*this).x-p.x)*((*this).x-p.x)+((*this).y-p.y)*((*this).y-p.y));    }    double Distance0() const          // 到原点(0,0)的距离    {        return sqrt(x*x+y*y);    }    CPoint SymmetricAxis(char style) const//style取'x','y'和'o'分别表示按x轴, y轴, 原点对称    {        CPoint p(this->x,this->y);        switch(style)        {        case 'x':            p.y=-y;            break;        case 'y':            p.x=-x;            break;        case 'o':            p.x=-x;            p.y=-y;            break;        }        return p;    }    void input()  //以x,y 形式输入坐标点    {        char ch;        cout<<"please input data as'x,y': "<<endl;        cin>>x>>ch>>y;        if(ch!=',')            cout<<"error!"<<endl;    }    void output() //以(x,y) 形式输出坐标点    {        cout<<"("<<x<<","<<y<<")"<<endl;    }};#endif // POINT_H_INCLUDED

triangle.h

#ifndef TRIANGLE_H_INCLUDED#define TRIANGLE_H_INCLUDED#include <iostream>#include <cmath>#include "point.h"using namespace std;class CTriangle{public:    CTriangle(CPoint &X,CPoint &Y,CPoint &Z):A(X),B(Y),C(Z) {} //给出三点的构造函数    void setTriangle(CPoint &X,CPoint &Y,CPoint &Z)//    {        A=X;        B=Y;        C=Z;        double a,b,c;        a=B.Distance1(C);        b=A.Distance1(C);        c=A.Distance1(B);        if(!(a<b+c&&b<a+c&&c<a+b))            cout<<"该三点无法组成三角形"<<endl;    }    float perimeter(void)//计算三角形的周长    {        return B.Distance1(C)+A.Distance1(C)+A.Distance1(B);    }    float area(void)//计算并返回三角形的面积    {        double a,b,c,p;        a=B.Distance1(C);        b=A.Distance1(C);        c=A.Distance1(B);        p=(a+b+c)/2;        return sqrt(p*(p-a)*(p-b)*(p-c));    }    bool isRightTriangle()//是否为直角三角形    {        double a,b,c;        a=B.Distance1(C);        b=A.Distance1(C);        c=A.Distance1(B);        if(area()==a*b/2||area()==c*b/2||area()==a*c/2)            return true;        else            return false;    }    bool isIsoscelesTriangle() //是否为等腰三角形    {        double a,b,c;        a=B.Distance1(C);        b=A.Distance1(C);        c=A.Distance1(B);        if(a==b||b==c||c==a)            return true;        else            return false;    }private:    CPoint A,B,C; //三顶点};#endif // TRIANGLE_H_INCLUDED

图片:




心得:

已初步掌握多文件组织,基本一次就过

0 0
原创粉丝点击