OJ 刷题HDU2036
改革春风吹满地 c++
求坐标面积
主要是一个坐标求面积公式
比如三个点(x1,y1)(x2,y2)(x3,y3)
S=|(x1y2+x2y3+x3y1)-(y1x2+y2x3+y3x1)|/2
#include<iostream>
#include<cmath>
using namespace std;
#include <iomanip>
int main()
{
int n;
while(cin>>n&&n!=0){
int x[100],y[100];
int sum1=0,sum2=0;
double S;
cout<<setiosflags(ios::fixed)<<setprecision(1);//保留1位小数
for(int i=0;i<n;i++){
cin>>x[i]>>y[i];//输入两个轴坐标
}
for(int i=0;i<n;i++){
if(i<n-1)
sum1+=x[i]*y[i+1];//公式前半部分
else
sum1+=x[i]*y[0];
}
for(int i=0;i<n;i++){
if(i<n-1)
sum2+=y[i]*x[i+1];//公式后半部分
else
sum2+=y[i]*x[0];
}
S=abs(double(sum1-sum2)/2);//先转为浮点数,再求绝对值
//这里绝对值不要用<math.h>里的fab(),编译器不识别
cout<<S<<endl;
}
return 0;
}