白白白; 2021-05-16 13:47 采纳率: 100%
浏览 41
已采纳

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;
}

有两个问题

  • 写回答

2条回答 默认 最新

  • qfl_sdu 2021-05-16 14:02
    关注

    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,输入的时候要判断一下。

     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器