用c++定义多边形类 包含属性:点坐标数组,点数等信息,和三个函数分别为:赋值、求多变形周长函数、求多边形面积函数,用 main() 进行测试。
时间: 2024-06-09 08:08:47 浏览: 90
以下是用C++定义多边形类的代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
class Polygon {
private:
int n; // 多边形的点数
double *x; // 多边形的横坐标数组
double *y; // 多边形的纵坐标数组
public:
// 构造函数
Polygon(int num) {
n = num;
x = new double[n];
y = new double[n];
}
// 析构函数
~Polygon() {
delete[] x;
delete[] y;
}
// 赋值函数
void setPoints(double *xx, double *yy) {
for (int i = 0; i < n; i++) {
x[i] = xx[i];
y[i] = yy[i];
}
}
// 计算多边形周长函数
double perimeter() {
double p = 0;
for (int i = 0; i < n-1; i++) {
double dx = x[i+1] - x[i];
double dy = y[i+1] - y[i];
p += sqrt(dx*dx + dy*dy);
}
double dx = x[0] - x[n-1];
double dy = y[0] - y[n-1];
p += sqrt(dx*dx + dy*dy);
return p;
}
// 计算多边形面积函数
double area() {
double a = 0;
for (int i = 0; i < n-1; i++) {
a += x[i]*y[i+1] - x[i+1]*y[i];
}
a += x[n-1]*y[0] - x[0]*y[n-1];
return fabs(a/2);
}
};
int main() {
// 创建一个包含6个点的多边形对象
Polygon poly(6);
// 给多边形赋值
double xx[] = {0, 1, 2, 2, 1, 0};
double yy[] = {0, 0, 1, 2, 2, 1};
poly.setPoints(xx, yy);
// 计算多边形周长和面积并输出结果
cout << "Perimeter: " << poly.perimeter() << endl;
cout << "Area: " << poly.area() << endl;
return 0;
}
```
以上代码中,我们定义了一个Polygon类,包含了多边形的点数、横坐标数组、纵坐标数组三个私有属性。在构造函数中,我们动态分配了横坐标数组和纵坐标数组的内存空间。在析构函数中,我们释放了这些内存空间。
我们还定义了三个公有函数,分别是setPoints()、perimeter()和area()。setPoints()函数用于给多边形的横坐标数组和纵坐标数组赋值,perimeter()函数用于计算多边形的周长,area()函数用于计算多边形的面积。
在main函数中,我们创建了一个包含6个点的多边形对象,并给它赋值。然后计算多边形的周长和面积,并输出结果。
运行结果如下:
```
Perimeter: 7.41421
Area: 2
```
阅读全文