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

来源:互联网 发布:office办公软件2016 编辑:程序博客网 时间:2024/06/10 06:48
/* *Copyright (c) 2014, 烟台大学计算机学院 *All rights reserved. *文件名称:week5-3.cpp *作者:高赞 *完成日期:2015年 4 月 6 日 *版本号:v1.0 * * */#include <iostream>#include "CPoint.h"#include "CTriangle.h"using namespace std;int main(){    CPoint p1,p2,p3;    CTriangle t1(p1,p2,p3);    cout<<"输入第一个顶点:";    p1.input();    cout<<"输入第二个顶点:";    p2.input();    cout<<"输入第三个顶点:";    p3.input();    t1.setTriangle(p1,p2,p3);        t1.setAB();     t1.setBC();   t1.setAC();    cout<<"该三角形的周长为"<<t1.perimeter()<<",面积为:"<<t1.area()<<endl;    if(t1.isRightTriangle())        cout<<"是直角三角形"<<endl;    else cout<<"不是直角三角形"<<endl;    if(t1.isIsoscelesTriangle())        cout<<"是等腰三角形"<<endl;    else cout<<"不是等腰三角形"<<endl;    return 0;}


CPoint.h

#ifndef CPOINT_H_INCLUDED#define CPOINT_H_INCLUDEDclass 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)    void input();  //以x,y 形式输入坐标点};#endif // CPOINT_H_INCLUDED


 

CTriangle.h

#ifndef CTRIANGLE_H_INCLUDED#define CTRIANGLE_H_INCLUDED#include "CPoint.h"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();//计算三角形的周长    double area();//计算并返回三角形的面积    bool isRightTriangle(); //是否为直角三角形    bool isIsoscelesTriangle(); //是否为等腰三角形        void setAB();    void setBC();    void setAC();private:    CPoint A,B,C; //三顶点    double AB,BC,AC;  //三边};#endif // CTRIANGLE_H_INCLUDED


 

CPoint 源文件

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


 

CTriangle源文件

#include <iostream>#include <cmath>#include "CTriangle.h"using namespace std;void CTriangle::setAB(){    AB=A.Distance1(B);}void CTriangle::setBC(){    BC=B.Distance1(C);}void CTriangle::setAC(){    AC=A.Distance1(C);}void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z){    A=X;    B=Y;    C=Z;}double CTriangle::perimeter(){    return AB+BC+AC;}double CTriangle::area(){    double p=(AB+BC+AC)/2;    return (sqrt(p*(p-AB)*(p-BC)*(p-AC)));}bool CTriangle::isRightTriangle(){    if(AB*AB+BC*BC!=AC*AC&&AB*AB+AC*AC!=BC*BC&&BC*BC+AC*AC!=AB*AB)        return false;    else return true;}bool CTriangle::isIsoscelesTriangle(){    if(AB==AC||AB==BC||AC==BC)        return true;    else return false;}


 

0 0
原创粉丝点击