大佬们,这个怎么做呀(・o・)
设计一个CGISPoint类 包含: float x, y; 完成相应的构造,拷贝构造,赋值等函数接口
设计一个GIS目标的类 CGISOBJ,包含三个成员变量:
1)目标名称 使用char [32]; 或string
2)点坐标数组 CGISPoint *m_points;
3)点数 int numPoints; 表示 m_points 指针的有效点数;
完成相应的构造函数,拷贝构造函数, 赋值函数等;
成员函数:CGISPoint GetGCenter(); //一个求GIS目标的重心
在main()中定义CGISOBJ的对象,初始化,然后调用求GIS目标的重心函数,输出结果。
1条回答 默认 最新
关注让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
首先我们可以设计CGISPoint类,包含两个成员变量float x, y表示点的坐标,然后完成相应的构造函数、拷贝构造函数、赋值函数等,以及一个计算重心的函数GetGCenter(),具体代码如下:class CGISPoint{ public: float x; float y; CGISPoint(float x_val, float y_val): x(x_val), y(y_val){} CGISPoint(const CGISPoint& other): x(other.x), y(other.y){} CGISPoint& operator=(const CGISPoint& other){ if(this != &other){ x = other.x; y = other.y; } return *this; } CGISPoint GetGCenter(){ return CGISPoint(x, y); //此处简化计算重心的方式,即重心为点本身 } };接着我们设计CGISOBJ类,包含三个成员变量:目标名称(char数组或string)、点坐标数组(CGISPoint指针)、点数。完成相应的构造函数、拷贝构造函数、赋值函数等。同时我们添加一个成员函数GetGCenter()用于计算GIS目标的重心,代码如下:
class CGISOBJ{ public: char name[32]; CGISPoint* m_points; int numPoints; CGISOBJ(const char* n, CGISPoint* p, int num): numPoints(num){ strcpy(name, n); m_points = new CGISPoint[numPoints]; for(int i = 0; i < numPoints; i++){ m_points[i] = p[i]; } } CGISOBJ(const CGISOBJ& other): numPoints(other.numPoints){ strcpy(name, other.name); m_points = new CGISPoint[numPoints]; for(int i = 0; i < numPoints; i++){ m_points[i] = other.m_points[i]; } } CGISOBJ& operator=(const CGISOBJ& other){ if(this != &other){ numPoints = other.numPoints; strcpy(name, other.name); delete[] m_points; m_points = new CGISPoint[numPoints]; for(int i = 0; i < numPoints; i++){ m_points[i] = other.m_points[i]; } } return *this; } CGISPoint GetGCenter(){ float sum_x = 0.0, sum_y = 0.0; for(int i = 0; i < numPoints; i++){ sum_x += m_points[i].x; sum_y += m_points[i].y; } float center_x = sum_x / numPoints; float center_y = sum_y / numPoints; return CGISPoint(center_x, center_y); } ~CGISOBJ(){ delete[] m_points; } };最后在main函数中定义一个CGISOBJ的对象,初始化,然后调用GetGCenter()函数计算GIS目标的重心,并输出结果,代码如下:
int main(){ CGISPoint points[3] = {CGISPoint(1.0, 2.0), CGISPoint(3.0, 4.0), CGISPoint(5.0, 6.0)}; CGISOBJ obj("Target1", points, 3); CGISPoint center = obj.GetGCenter(); cout << "The center of the GIS object is: (" << center.x << ", " << center.y << ")" << endl; return 0; }解决 无用评论 打赏 举报