POJ 2812

题意:给一个多边形柱体的底边形状和体积,求它的高。

题解:叉积求面积,再用体积除以面积。

View Code
 1 #include<cstdlib>

 2 #include<cmath>

 3 #include<cstdio>

 4 #include<algorithm>

 5 #define max(a,b) (((a)>(b))?(a):(b))

 6 #define min(a,b) (((a)>(b))?(b):(a))

 7 #define sign(x) ((x)>eps?1:((x)<-eps?(-1):(0))) //符号函数

 8 using namespace std;

 9 const int MAXN=10000;

10 const double eps=1e-8,inf=1e50;

11 struct point

12 {

13     double x,y;

14     point(){}

15     point(double _x,double _y){x=_x;y=_y;}

16 };

17 inline double xmult(double x1,double y1,double x2,double y2)

18 {

19     return x1*y2-x2*y1;

20 }

21 inline double getarea(point pg[],int n)

22 {

23     double area=0;

24     pg[n]=pg[0];

25     for(int i=0;i<n;i++)

26         area+=xmult(pg[i].x,pg[i].y,pg[i+1].x,pg[i+1].y);

27     return fabs(area)/2.0;

28 }

29 point pg[MAXN];

30 int main()

31 {

32     int n;

33     while(scanf("%d",&n),n>=3)

34     {

35         for(int i=0;i<n;i++)

36             scanf("%lf%lf",&pg[i].x,&pg[i].y);

37         double v;

38         scanf("%lf",&v);

39         printf("BAR LENGTH: %.2lf\n",v/getarea(pg,n));

40     }

41     return 0;

42 }

你可能感兴趣的:(poj)