用C语言写一个程序:已知有N个点,求由这N个点组成的多边形的外接矩形的四个顶点坐标
时间: 2023-03-30 17:00:45 浏览: 208
以下是用 C 语言编写的程序,可以求由 N 个点组成的多边形的外接矩形的四个顶点坐标:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MAX_POINTS 100
typedef struct {
double x, y;
} Point;
Point points[MAX_POINTS];
int n;
double min(double a, double b) {
return a < b ? a : b;
}
double max(double a, double b) {
return a > b ? a : b;
}
void get_bounding_box(Point *p, int n, Point *min_pt, Point *max_pt) {
min_pt->x = max_pt->x = p[].x;
min_pt->y = max_pt->y = p[].y;
for (int i = 1; i < n; i++) {
min_pt->x = min(min_pt->x, p[i].x);
min_pt->y = min(min_pt->y, p[i].y);
max_pt->x = max(max_pt->x, p[i].x);
max_pt->y = max(max_pt->y, p[i].y);
}
}
int main() {
printf("请输入点的个数:");
scanf("%d", &n);
if (n < 3 || n > MAX_POINTS) {
printf("点的个数必须在 3 到 %d 之间\n", MAX_POINTS);
return 1;
}
printf("请输入每个点的坐标:\n");
for (int i = ; i < n; i++) {
printf("点 %d:", i + 1);
scanf("%lf %lf", &points[i].x, &points[i].y);
}
Point min_pt, max_pt;
get_bounding_box(points, n, &min_pt, &max_pt);
printf("外接矩形的四个顶点坐标为:\n");
printf("(%g, %g)\n", min_pt.x, min_pt.y);
printf("(%g, %g)\n", max_pt.x, min_pt.y);
printf("(%g, %g)\n", max_pt.x, max_pt.y);
printf("(%g, %g)\n", min_pt.x, max_pt.y);
return ;
}
```
注意:这个程序只能求凸多边形的外接矩形,对于非凸多边形可能会得到错误的结果。