c++定义多边形类 包含属性:点坐标数组,点数等信息,和三个函数分别为:赋值、求多变形周长函数、求多边形面积函数,用 main() 进行测试。
时间: 2024-06-09 22:07:51 浏览: 95
下面是一个简单的多边形类定义:
```c++
#include <iostream>
#include <cmath>
using namespace std;
class Polygon {
private:
int n; // 多边形的边数
double *x; // 多边形的顶点横坐标数组
double *y; // 多边形的顶点纵坐标数组
public:
// 构造函数
Polygon(int n_) {
n = n_;
x = new double[n];
y = new double[n];
}
// 析构函数
~Polygon() {
delete[] x;
delete[] y;
}
// 赋值函数
void set_points(double *x_, double *y_) {
for (int i = 0; i < n; i++) {
x[i] = x_[i];
y[i] = y_[i];
}
}
// 求多边形周长函数
double perimeter() {
double p = 0;
for (int i = 0; i < n-1; i++) {
p += sqrt(pow(x[i+1]-x[i], 2) + pow(y[i+1]-y[i], 2));
}
p += sqrt(pow(x[0]-x[n-1], 2) + pow(y[0]-y[n-1], 2));
return p;
}
// 求多边形面积函数
double area() {
double s = 0;
for (int i = 0; i < n-1; i++) {
s += x[i]*y[i+1] - y[i]*x[i+1];
}
s += x[n-1]*y[0] - y[n-1]*x[0];
return 0.5*fabs(s);
}
};
int main() {
double x[] = {0, 3, 5, 4, 1};
double y[] = {0, 0, 2, 5, 4};
int n = sizeof(x)/sizeof(x[0]);
Polygon poly(n);
poly.set_points(x, y);
cout << "周长:" << poly.perimeter() << endl;
cout << "面积:" << poly.area() << endl;
return 0;
}
```
这个类定义了一个多边形类 Polygon,包含私有成员变量 n、x、y,分别表示多边形的边数、顶点横坐标数组、顶点纵坐标数组。类的公有成员函数包括构造函数、析构函数、赋值函数 set_points、求周长函数 perimeter 和求面积函数 area。其中,set_points 函数用于给多边形的顶点坐标数组赋值,perimeter 函数用于计算多边形的周长,area 函数用于计算多边形的面积。在 main 函数中,我们定义了一个五边形,使用 set_points 函数给多边形的顶点坐标数组赋值,然后调用 perimeter 和 area 函数计算多边形的周长和面积,并输出结果。
需要注意的是,这里的计算多边形面积的算法是基于叉积的,而且只适用于凸多边形。如果要计算非凸多边形的面积,需要使用其他的算法。
阅读全文