定义多边形类,包含属性:点坐标数组,点数等信息, 和三个函数分别为:赋值、求多变形周长函数、求多边形面积函数。
时间: 2023-04-02 17:04:49 浏览: 47
好的,这是一个关于多边形类的问题。多边形类可以包含点坐标数组、点数等信息,并且可以定义三个函数:赋值、求多边形周长函数和求多边形面积函数。赋值函数可以用来初始化多边形的点坐标数组和点数信息,求多边形周长函数可以计算多边形的周长,而求多边形面积函数可以计算多边形的面积。
相关问题
定义多边形类 包含属性:点坐标数组,点数等信息,和三个函数分别为:赋值、求多变形周长函数、求多边形面积函数,用 main() 进行测试。
下面是多边形类的实现:
```python
class Polygon:
def __init__(self, points=[]):
self.points = points
self.num_points = len(points)
def assign_points(self, points):
self.points = points
self.num_points = len(points)
def perimeter(self):
perim = 0
for i in range(self.num_points):
x1, y1 = self.points[i]
x2, y2 = self.points[(i+1)%self.num_points]
perim += ((x2-x1)**2 + (y2-y1)**2)**0.5
return perim
def area(self):
area = 0
for i in range(self.num_points):
x1, y1 = self.points[i]
x2, y2 = self.points[(i+1)%self.num_points]
area += x1*y2 - x2*y1
return abs(area)/2
```
在这个类中,我们定义了一个构造函数,一个函数来赋值多边形的点坐标,一个函数来计算多边形的周长,以及一个函数来计算多边形的面积。
下面是 main() 函数的实现:
```python
if __name__ == '__main__':
p = Polygon()
p.assign_points([(0,0), (0,1), (1,1), (1,0)])
print("周长为:", p.perimeter())
print("面积为:", p.area())
```
在这个函数中,我们首先创建了一个多边形对象 p,并给它赋值了四个点的坐标。然后我们分别调用了它的周长和面积函数,并将它们的结果打印出来。
c++定义多边形类 包含属性:点坐标数组,点数等信息,和三个函数分别为:赋值、求多变形周长函数、求多边形面积函数,用 main() 进行测试。
下面是一个简单的多边形类定义:
```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 函数计算多边形的周长和面积,并输出结果。
需要注意的是,这里的计算多边形面积的算法是基于叉积的,而且只适用于凸多边形。如果要计算非凸多边形的面积,需要使用其他的算法。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)