交一作业

124 阅读2分钟

用来一整天的时间写一个求三角形周长和求矩形面积的我

还是很开心的,哈哈哈哈

毕业,两年多,努力追求达到一个大学生该有的水平。我还没死,还很年轻,但也不早了

#include<vector>
#include<math.h>

using namespace std;

class Calculate
{
public:
    class Point final
    {
    public:
        Point(); //不带参数构造函数
        Point(double X, double Y); //带参数的构造函数
        Point(const Point& p); //拷贝构造函数;
        double getX(); //获取横坐标
        double getY(); //获取纵坐标
        void setX(double iX); //设置横坐标
        void setY(double iY); //设置纵坐标
    private:
        double x; //横坐标
        double y; //纵坐标
    };
public:
    Calculate();//不带参数构造函数
    Calculate(double x, double y);//带参数的构造函数
    Calculate(const Calculate& p);//拷贝构造函数;
    double distance(Point p1, Point p2);//计算两点的距离
    virtual double distance_Area(Point p1, Point p2, Point p3);//计算三个点的距离
    virtual double distance_Area(Point p1, Point p2, double x);//计算两点间的距离
    virtual double distance_Area(Point p1, double  x, double y);//计算矩形面积   
    double Area(double x, double y);//计算圆的面积
    
//private:
    double dist;
    double area;
};
#pragma region Calculate
Calculate::Calculate()
{
    dist = 0;
    area = 0;
}
Calculate::Calculate(double x, double y)
{
    dist = 0;
    area = 0;
}
Calculate::Calculate(const Calculate& p)
{
    dist = p.dist;
    area = p.area;
}
double Calculate::distance(Point p1, Point p2)
{
    dist = sqrt(pow(p1.getX() - p2.getX(), 2) + pow(p1.getY() - p2.getY(), 2));
    return dist;
}
double Calculate::distance_Area(Point p1, Point p2, Point p3)
{
    dist = distance(p1, p2) + distance(p1, p3) + distance(p2, p3);
    //dist = sqrt(pow(p1.getX() - p2.getX(), 2) + pow(p1.getY() - p2.getY(), 2)) + sqrt(pow(p1.getX() - p3.getX(), 2) + pow(p1.getY() - p3.getY(), 2))+ sqrt(pow(p2.getX() - p3.getX(), 2) + pow(p2.getY() - p3.getY(), 2));
    return dist;
}
double Calculate::distance_Area(Point p1, Point p2, double x)
{
    dist = distance(p1, p2);
    return dist;
}
double Calculate::distance_Area(Point p1, double  x, double y)
{
    return area = x * y;
}
double Calculate::Area(double x, double y)
{
    return x * y;
}
#pragma endregion

#pragma region Point
Calculate::Point::Point()
{
    x = 0;
    y = 0;
}
Calculate::Point::Point(double X, double Y)
{
    x = X;
    y = Y;
}
Calculate::Point::Point(const Point& p)
{
    x = p.x;
    y = p.y;
}
double Calculate::Point::getX()
{
    return x;
}
double Calculate::Point::getY()
{
    return y;
}
void Calculate::Point::setX(double iX)
{
    x = iX;
}
void Calculate::Point::setY(double iY)
{
    y = iY;
}
#pragma endregion

class Line : Calculate
{
public:
     double distance_Area(Point p1, Point p2,double x)final;
  
private:
};
#pragma region Line
double Line::distance_Area(Point p1, Point p2, double x)
{
    dist = Calculate::distance(p1, p2);
    return dist;
}
#pragma endregion
class Trilateral :public Calculate, public Line
{
public:
    double distance_Area(Point p1, Point p2, Point p3)final;

private:

};
#pragma region Trilateral
double Trilateral::distance_Area(Point p1, Point p2, Point p3)
{
    
    Calculate::dist = sqrt(pow(p1.getX() - p2.getX(), 2) + pow(p1.getY() - p2.getY(), 2)) + sqrt(pow(p1.getX() - p3.getX(), 2) + pow(p1.getY() - p3.getY(), 2))+ sqrt(pow(p2.getX() - p3.getX(), 2) + pow(p2.getY() - p3.getY(), 2));
    return Calculate::dist;
}
#pragma endregion
class  Rectangle:Trilateral
//class rectangle :Calculate
{
public:
    double distance_Area(Point p1, double  x, double y)final;

private:

};
#pragma region Rectangle
double Rectangle::distance_Area(Point p1, double  x, double y)
{
    Calculate::area = Calculate::Area(x, y);
    return  Calculate::area;

}
#pragma endregion
int main()
{
    Line Li ;
    Trilateral Tr;
    Rectangle Re;
    int x = -1, y = -1;
    Calculate::Point p1(1, 2), p2(3, 4), p3(4, 5);
    cout << Li.distance_Area(p1, p2, x) << endl;
    cout << Tr.distance_Area(p1, p2, p3) << endl;
    cout << Re.distance_Area(p1, 5, 6) << endl;
    getchar();
}