问题链接 我用梯形公式解决了这个问题,但是有些测试是不正确的,我不知道错误在哪里。
#include <stdio.h>
#define MAX 1002
int x[MAX], y[MAX],n;
double findArea(int *x, int *y)
{
double s = 0;
x[n] = x[0]; y[n] = y[0];
for(int i = 0; i < n; i++)
s += (y[i+1] + y[i]) * (x[i+1] - x[i])/2.0;
return (s < 0) ? -s : s;
}
int main(void){
scanf("%d",&n);
for(int i = 0; i < n; i++){
scanf("%d %d",&x[i],&y[i]);}
printf("%.3lf\n",findArea(x,y));
}
在顶点条件下最多可以有 50000 个,而您只为 1000 个分配内存可以吗?
她在这里坠落……
顺便说一句,我会做这样的事情:
但这并不重要...
为此,有一个非常简单的多边形面积公式,处理异常就足够了,而且比梯形效果更好。这就是高斯面积公式。