/* 程序问题注释开始
-
程序的版权和版本声明部分
-
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);
}
}
运行结果: