C++做题遇到了问题在代码里注释了;帮忙看看?

//设计并测试一个名为Trapezium的梯形类,其属性为梯形的四个顶点的坐标。该梯形上边和下边均和x轴平行。
//根据类的封装性要求,在类的声明中用8个私有的整型变量表示4个点的坐标值,
//声明成员函数initial(int, int, int, int, int, int, int, int)初始化数据成员
//函数GetPosition(int&, int&, int&, int&, int&, int&, int&, int&)读取坐标值,函数Area()计算面积。
#include<iostream>
using namespace std;
class Trapezium
{
	int x1, x2, x3, x4, y1, y2, y3, y4;
public:
	void initial(int a1, int a2, int a3, int a4, int b1, int b2, int b3, int b4)
	{
		x1 = a1; x2 = a2; x3 = a3; x4 = a4; y1 = b1; y2 = b2; y3 = b3; y4 = b4;
	}
	void GetPosition(int& a1, int& a2, int& a3, int& a4, int& b1, int& b2, int& b3, int& b4)//为什么要引用
	{
		cout << a1 << " " << a2 << " " << a3 << " " << a4 << " " << b1 << " " << b2 << " " << b3 << " " << b4 << endl;
	}
	double Area()//为什么不写形参进去
	{
		return (1 * (x2 - x1) + (x4 - x3)) * (y1 - y3) / 2;
	}
};
void test01()
{
	Trapezium t1;
	int a, b, c, d, e, f, g, h;
	cin >> a >> b >> c >> d >> e >> f >> g >> h;
	t1.initial(a, b, c, d, e, f, g, h);
	t1.GetPosition(a, b, c, d, e, f, g, h);
	cout << t1.Area() << endl;
}

有两个问题

1.求面积的函数有问题,修改如下:(如有帮助,请采纳一下,谢谢)

//因为已经输入了梯形的四个顶点坐标,梯形的面积就确定了=(上边+下边)*高/2,所以不用输入参数
double Area()
{
    //abs()是取绝对值,保证计算出来的边长是正数
	return ( (abs(x2 - x1) + abs(x4 - x3))) * abs(y1 - y3) / 2;
}

2.没写无参构造函数,修改如下:

class Trapezium
{
public:
	Trapezium(){} //添加默认构造函数
private:
	int x1, x2, x3, x4, y1, y2, y3, y4;
public:
	void initial(int a1, int a2, int a3, int a4, int b1, int b2, int b3, int b4)
	{
		x1 = a1; x2 = a2; x3 = a3; x4 = a4; y1 = b1; y2 = b2; y3 = b3; y4 = b4;
	}
	void GetPosition(int& a1, int& a2, int& a3, int& a4, int& b1, int& b2, int& b3, int& b4)//为什么要引用
	{
		cout << a1 << " " << a2 << " " << a3 << " " << a4 << " " << b1 << " " << b2 << " " << b3 << " " << b4 << endl;
	}
	double Area()//因为已经输入了梯形的四个顶点坐标,梯形的面积就确定了=(上边+下边)*高/2,所以不用输入参数
	{
		return ( (abs(x2 - x1) + abs(x4 - x3))) * abs(y1 - y3) / 2;
	}
};

 

3.因为要求上边和下边与x轴平行,也就要求y1=y2并且y3=y4,输入的时候要判断一下。

 

int main()

{
test01();

}

//没有粘贴到;