[解説] - HDUの改革と床面積の復活[ポリゴン問題

##改革の春風モントリオール

「床の上に改革の春風、
ないACは問題ではない。
それは家を返すことではない
。同様にエーカーの第三
!(バンド演奏の音楽を)ありがとう」
一部の学生の心の優れた状態を言っては、あなたが毎日ゲームを知って、試験単純な主題ので、それは霧のですが、また非常に少ないリメリックであることが判明します。
さて、教師の責任は、それはあなたに1つを指し、それはファームにたいので、あなたは、問題の解決を支援することです。
このフィールドは、あなたを与えるために、もともとlinle今準備ができて、温州市、浙江省Lingxi Linjiapuzi村、土地のポリゴン状片の蒼南県に位置しています。実際に土地を取得するために正しく答えた場合は、すべてのものはそう簡単ではありません、あなたはまず、最終的には土地面積のどのくらいを教えてください必要があります。
心配、右?農業も必要とACの知識で、あなたが知っているようにです!それは良い練習した後...

####入力

入力テストケースを複数含むデータ、各テストケースのための1つの行、各行の先頭は、整数N(3 <= N <=である 100)、 (もちろん、頂点の数)ポリゴンの数を表し、エッジは、逆に頂点のn個の座標(X1、Y1、X2、Y2、所与の順に時計回り 、... XN、YN)を、すべての座標が整数で表される問題を、簡単にするために。
入力データは32ビット整数の範囲内のすべての整数であり、n = 0は処理せずにデータの終わりを示します。

####出力

小数点小数場所の結果に対応する出力ポリゴン面積各テストケースについて。
ライン当たり各インスタンスの出力。

####サンプル入力

3 0 0 1 0 0 1
4 1 0 0 1 -1 0 0 -1
0

####サンプル出力

0.5
2.0

コード

#include<stdio.h>
int main(void)
{
	int i,n;
	double x[100],y[100],sum;
	while(scanf("%d",&n),n!=0)
	{
		sum = 0;
		for(i = 0; i < n; i ++)
			scanf("%lf%lf",&x[i],&y[i]);
		for(i = 1; i < n - 1; i ++)
			sum += (x[0]*y[i]+y[0]*x[i+1]+x[i]*y[i+1]-x[i+1]*y[i]-x[i]*y[0]-x[0]*y[i+1])/2.0;

		printf("%.1f\n",sum);
	}
	return 0;
}

注記

この問題は、複数の三角形にポリゴンが最初の点として、カウントすることであることができ、三角形、三角形領域式の一般的なすべての頂点。

S =(ダブル)(X2 、Y3 + X1、Y2 + X3 、Y1-X3の Y2-X2 、Y1-X1の Y3)/2.0。

公開された34元の記事 ウォンの賞賛2 ビュー929

おすすめ

転載: blog.csdn.net/Kapo1/article/details/103492995