第五周项目三多文件组织

main.cpp
#include <iostream>
#include "CT.h"
using namespace std;
int main()
{
    CPoint X,Y,Z;
    X.get_xy();
    Y.get_xy();
    Z.get_xy();
    CTriangle c(X,Y,Z);
    c.Set_L();
    c.perimeter();
    cout<<"该三角形的面积是:"<<c.area()<<endl;
    if(c.isRightTriangle())
        cout<<"该三角形是直角三角形"<<endl;
    else
        cout<<"该三角形不是直角三角形"<<endl;
    if(c.isIsoscelesTriangle())
        cout<<"该三角形为等腰三角形"<<endl;
    else
        cout<<"该三角形不是等腰三角形"<<endl;
    return 0;
}

CT.h
#ifndef CT_H_INCLUDED
#define CT_H_INCLUDED
class CPoint
{
public:
    CPoint(double xx=0,double yy=0):x(xx),y(yy) {};
    void get_xy();
    double Distance(CPoint p);
private:
    double x;
    double 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);//
    float Set_L(void);
    float perimeter(void);//计算三角形的周长
    float area(void);//计算并返回三角形的面积
    bool isRightTriangle(); //是否为直角三角形
    bool isIsoscelesTriangle(); //是否为等腰三角形
private:
    CPoint A,B,C; //三顶点
    int ABL,ACL,BCL;
};



#endif // CT_H_INCLUDED

CTfunction.cpp
#include <iostream>
#include "CT.h"
#include <cmath>
using namespace std;
void CPoint::get_xy()
{
    double o,p;
    cout<<"请输入坐标"<<endl;
    cin>>o>>p;
    x=o;
    y=p;
}
double CPoint::Distance(CPoint p)
{
    return (this->x-p.x)*(this->x-p.x)+(this->y-p.y)*(this->y-p.y);
}
float CTriangle::Set_L(void)
{
    ABL=A.Distance(B);
    BCL=B.Distance(C);
    ACL=C.Distance(A);
}
void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z)
{
    A=X;
    B=Y;
    C=Z;
}
float CTriangle::perimeter(void)
{
    cout<<"三角形的周长为:"<<ABL+ACL+BCL<<endl;
}
float CTriangle::area(void)
{
    double P;
    P=(ABL+ACL+BCL)/2;
    return sqrt(P*(P-ABL)+P*(P-ACL)+P*(P-BCL));
}
bool CTriangle::isRightTriangle()
{
    if(ABL*ABL==ACL*ACL+BCL*BCL || ACL*ACL==ABL*ABL+BCL+BCL || BCL*BCL==ABL*ABL+ACL*ACL)
        return true;
    else
        return false;
}
bool CTriangle::isIsoscelesTriangle()
{
    if(ACL==ABL || ACL==BCL ||ABL==BCL)
        return true;
    else
        return false;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值