【蓝桥杯】12-1三角形(Java实现)


/* 程序问题注释开始

  • 程序的版权和版本声明部分

  • Copyright © 2020,湖南工程职业技术学院信息工程学院学生

  • 文件名称: 蓝桥杯赛题

  • 作 者: 李 斌

  • 完成日期: 2020 年 04 月 14日

  • 对任务及求解方法的描述部分

  • 问题描述
      为二维空间中的点设计一个结构体,在此基础上为三角形设计一个结构体。分别设计独立的函数计算三角形的周长、面积、中心和重心。输入三个点,输出这三个点构成的三角形的周长、面积、外心和重心。结果保留小数点后2位数字。

  • 样列输入
      0 0
      0 1
      1 0

  • 样例输出
      3.41
      0.50
      0.50 0.50
      0.33 0.33

  • 数据规模和约定
      输入数据中每一个数的范围。
      例:doule型表示数据。

  • 程序问题注释结束

*/


import java.util.Scanner;
public class Main {
    
    

	public static void main(String[] args) {
    
    
		// TODO 自动生成的方法存根
		Scanner in=new Scanner(System.in); 
		double[][] arr=new double[3][2];
		//分别存储面积、周长、半周长
		double area=0,perimeter=0,halfperimeter=0;
		//循环录入点坐标
		for(int i=0;i<3;i++)
		{
    
    
			//存储三点坐标
			arr[i][0]=in.nextDouble();
			arr[i][1]=in.nextDouble();
		}
		//分别求出三边长
		//利用两点之间的距离公式求边长
		double a=Math.sqrt(Math.pow(arr[0][0]-arr[1][0],2)+Math.pow(arr[0][1]-arr[1][1],2));
		double b=Math.sqrt(Math.pow(arr[1][0]-arr[2][0],2)+Math.pow(arr[1][1]-arr[2][1],2));
		double c=Math.sqrt(Math.pow(arr[0][0]-arr[2][0],2)+Math.pow(arr[0][1]-arr[2][1],2));
		//周长=边长之和
		perimeter=a+b+c;
		//输出周长
		System.out.printf("%.2f\n",perimeter);
		//面积
		//存储半周长
		halfperimeter=perimeter/2;
		//海伦定理求面积
		area=Math.sqrt(halfperimeter*(halfperimeter-a)*(halfperimeter-b)*(halfperimeter-c));
		//输出面积
		System.out.printf("%.2f\n",area);
		//外心
		//分别存储外心点坐标x,y
		double circumcenterX,circumcenterY,k;
		//三角形外心公式
		k = 2 * (arr[0][0] - arr[1][0]) * (arr[2][1] - arr[1][1]) - 2 * (arr[0][1] - arr[1][1]) * (arr[2][0] - arr[1][0]);
		circumcenterX = (arr[2][1] - arr[1][1]) * (arr[0][0] * arr[0][0] + arr[0][1] * arr[0][1] - arr[1][0] * arr[1][0] - arr[1][1] * arr[1][1]) - (arr[0][1] - arr[1][1])
				* (arr[2][0] * arr[2][0] + arr[2][1] * arr[2][1] - arr[1][0] * arr[1][0] - arr[1][1] * arr[1][1]);
		circumcenterY = (arr[0][0] - arr[1][0]) * (arr[2][0] * arr[2][0] + arr[2][1] * arr[2][1] - arr[1][0] * arr[1][0] - arr[1][1] * arr[1][1]) - (arr[2][0] - arr[1][0])
				* (arr[0][0] * arr[0][0] + arr[0][1] * arr[0][1] - arr[1][0] * arr[1][0] - arr[1][1] * arr[1][1]);
		//输出外心坐标点
		System.out.printf("%.2f %.2f\n",circumcenterX/k,circumcenterY/k);
		//重心
		//分别存储重心点坐标x,y
		double weightpointX,weightpointY;
		//三角形重心公式
		weightpointX=(arr[0][0]+arr[1][0]+arr[2][0])/3;
		weightpointY=(arr[0][1]+arr[1][1]+arr[2][1])/3;
		//输出重心坐标点
		System.out.printf("%.2f %.2f\n",weightpointX,weightpointY);
		
	}

}

运行结果:
运行结果

猜你喜欢

转载自blog.csdn.net/qq_46354133/article/details/105522042
今日推荐