用来一整天的时间写一个求三角形周长和求矩形面积的我
还是很开心的,哈哈哈哈
毕业,两年多,努力追求达到一个大学生该有的水平。我还没死,还很年轻,但也不早了
#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();
}