2036-改革春风吹满地(java)

在这里插入图片描述
思路:可以将图形分为一个个的三角形,将一个顶点固定,并与其他两个定点组合,运用三角形的边求面积公式,有序的与一个个顶点组成的三角形相加即可。

import java.util.*;
public class Main {
    
    
public static void main(String[] args) {
    
    
	Scanner a=new Scanner(System.in);
	while(a.hasNext())
	{
    
    
		int n=a.nextInt();
		float area=0;
		if(n==0)
			break;
		else if(n>=3&&n<=100)
		{
    
    
			int[] m=new int[n];     //创建两个坐标数组
			int[] b=new int[n];
			for(int i=0;i<n;i++)
			{
    
    
				m[i]=a.nextInt();
				b[i]=a.nextInt();
			}
			for(int i=0;i<n;i++)	//多边形求面积,可以将一个点固定,并用其与另外俩个顶点相关联组成一个三角形,这样求一个个三角形面积相加则为多边形的面积
			{
    
    						//公式为:S=[(X0Y1-X1Y0)+(X1Y2-X2Y1)+...+(X(n-1)Y0-X0Y(n-1))]/2;
				int j=(i+1)%n;		//当三角形运行到最后一个顶点时,要与最初的顶点相运算,用取余的方法可得
				area+=(m[i]*b[j]-b[i]*m[j])/2.0;
			}
			if(area<0)
				area=-area;
			System.out.printf("%.1f",area); //精确度要注意
			System.out.println();
		}
	}
}
}

若有错误,还请指正。

猜你喜欢

转载自blog.csdn.net/weixin_45956604/article/details/114600273