算法提高 12-1三角形
问题描述
为二维空间中的点设计一个结构体,在此基础上为三角形设计一个结构体。分别设计独立的函数计算三角形的周长、面积、中心和重心。输入三个点,输出这三个点构成的三角形的周长、面积、外心和重心。结果保留小数点后2位数字。
样例输出
与上面的样例输入对应的输出。
例:
数据规模和约定
输入数据中每一个数的范围。
例:doule型表示数据。
给定三角形三个顶点的坐标,如何求三角形的外心的坐标呢?
例如 :给定a(x1,y1) b(x2,y2) c(x3,y3)求外接圆心坐标O(x,y)
1.首先,外接圆的圆心是三角形三条边的垂直平分线的交点,我们根据圆心到顶点的距离相等,可以列以下方程
(x1-x)(x1-x)-(y1-y)(y1-y)=(x2-x)(x2-x)+(y2-y)(y2-y);(x2-x)(x2-x)+(y2-y)(y2-y)=(x3-x)(x3-x)+(y3-y)(y3-y)
2化简得到
2*(x2-x1)*x+2*(y2-y1)y=x2^2+y2^2-x1^2-y1^2;
2*(x3-x2)*x+2*(y3-y2)y=x3^2+y3^2-x2^2-y2^2; 令A1=2*(x2-x1);B1=2*(y2-y1);C1=x2^2+y2^2-x1^2-y1^2;A2=2*(x3-x2);B2=2*(y3-y2);C2=x3^2+y3^2-x2^2-y2^2;即A1*x+B1y=C1;A2*x+B2y=C2;
3.最后根据克拉默法则:
x=((C1*B2)-(C2*B1))/((A1*B2)-(A2*B1));y=((A1*C2)-(A2*C1))/((A1*B2)-(A2*B1));
因此,x,y为最终结果;
代码如下:
package ADV_230;import java.util.Scanner;public class Main {//求三角形的周长public static double perimeter(int x[],int y[]){//求三角形的三边长,求和double a=(x[1]-x[2])*(x[1]-x[2])+(y[1]-y[2])*(y[1]-y[2]);double b=(x[2]-x[3])*(x[2]-x[3])+(y[2]-y[3])*(y[2]-y[3]);double c=(x[3]-x[1])*(x[3]-x[1])+(y[3]-y[1])*(y[3]-y[1]);double perimeter=Math.sqrt(a)+Math.sqrt(b)+Math.sqrt(c);return perimeter;}//求三角形的面积public static double area(int x[],int y[]){//求出三边长,double a=(x[1]-x[2])*(x[1]-x[2])+(y[1]-y[2])*(y[1]-y[2]);double b=(x[2]-x[3])*(x[2]-x[3])+(y[2]-y[3])*(y[2]-y[3]);double c=(x[3]-x[1])*(x[3]-x[1])+(y[3]-y[1])*(y[3]-y[1]);a=Math.sqrt(a);b=Math.sqrt(b);c=Math.sqrt(c);//求出周长的一般后,再利用公式求面积double p=(a+b+c)/2;double area=Math.sqrt(p*(p-a)*(p-b)*(p-c));return area;}//求三角形的外心坐标public static void wx(int x[],int y[],double a[]){double a1=2*(x[2]-x[1]);double b1=2*(y[2]-y[1]);double c1=(x[2]*x[2]+y[2]*y[2]-x[1]*x[1]-y[1]*y[1]);double a2=2*(x[3]-x[2]);double b2=2*(y[3]-y[2]);double c2=(x[3]*x[3]+y[3]*y[3]-x[2]*x[2]-y[2]*y[2]);a[0]=(c1*b2-c2*b1)/(a1*b2-a2*b1);a[1]=(a1*c2-a2*c1)/(a1*b2-a2*b1);}//求三角形的重心坐标public static void zx(int x[],int y[],double a[]){a[0]=(x[1]+x[2]+x[3])*1.0/3;a[1]=(y[1]+y[2]+y[3])*1.0/3;}public static void main(String[] args) {int x[]=new int[4];int y[]=new int[4];Scanner cin=new Scanner(System.in);for(int i=1;i<=3;i++){x[i]=cin.nextInt();y[i]=cin.nextInt();}System.out.println(String.format("%.2f",perimeter(x,y)));System.out.println(String.format("%.2f",area(x,y)));double a[]=new double[2];wx(x,y,a);System.out.print(String.format("%.2f",a[0])+" ");System.out.println(String.format("%.2f",a[1]));zx(x,y,a);System.out.print(String.format("%.2f",a[0])+" ");System.out.println```
(String.format("%.2f",a[1]));}
}
算法提高 12-1三角形相关推荐
- 蓝桥杯 算法提高 输出正反三角形 (Java)
使用循环结构打印下述图形,打印行数n由用户输入.图中每行事实上包括两部分,中间间隔空格字符数m也由用户输入. 样例输入n,m: 5 4 样例输出: * ************ *********** ...
- 试题 算法提高 输出正反三角形
资源限制时间限制:1.0s 内存限制:512.0MB 题目描述: 思路: 先打印第一个三角形,然后再考虑第二个三角形. 考虑之后可以发现,第二个三角形是第一个三角形平移了m个单位,然后垂直旋转后的结果 ...
- 蓝桥杯 ADV-88 算法提高 输出正反三角形
使用循环结构打印下述图形,打印行数n由用户输入.图中每行事实上包括两部分,中间间隔空格字符数m也由用户输入. 样例输入n,m: 5 4 样例输出: * ********* *** ******* * ...
- 算法提高 输出正反三角形
使用循环结构打印下述图形,打印行数n由用户输入.图中每行事实上包括两部分,中间间隔空格字符数m也由用户输入. 样例输入n,m: 5 4样例输出: * ********* *** ******* *** ...
- Java实现 蓝桥杯 算法提高 三角形
算法提高 12-1三角形 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 为二维空间中的点设计一个结构体,在此基础上为三角形设计一个结构体.分别设计独立的函数计算三角形的周长.面积. ...
- 蓝桥 ADV-230 算法提高 12-1三角形 【数学公式】
算法提高 12-1三角形 时间限制:1.0s 内存限制:256.0MB 问题描述 为二维空间中的点设计一个结构体,在此基础上为三角形设计一个结构体.分别设计独立的函数计算三角形的周长 ...
- 算法提高 邮票面值设计
算法提高 邮票面值设计 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤13)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮 ...
- 蓝桥杯练习系统习题-算法提高1
文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法提高1 题目搜索方式:Ctrl+F--> 输入题目名称-> ...
- 蓝桥杯 算法提高 日期计算
算法提高 日期计算 时间限制:1.0s 内存限制:256.0MB问题描述已知2011年11月11日是星期五,问YYYY年MM月DD日是星期几?注意考虑闰年的情况.尤其是逢百年不闰,逢400年闰的情况. ...
- 算法提高 邮票面值设计 搜索 动态规划
算法提高 邮票面值设计 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤13)种邮票的情况下(假定所有的邮票数量都足够),如何设 ...
最新文章
- Unity3d创建注册登录页面(1)
- PESCMS Ticket 客服工单系统 v1.2.5 发布
- no.8 C控制语句:循环 01
- hadoop集群swap_性能瓶颈--MEM(swap)
- iOS开发之 [NSNull length]:unrecognized selector sent
- python tkinter进度条_在python3.7中更新tkinter进度条
- 萝卜家园win11系统32位微软原版镜像v2021.08
- 三、面向对象——9-初始化块
- 全新 Veeam Availability Suite 9.5 成为率先全面集成 Windows Server 2016和Hyper-V技术的 可用性解决方案之一...
- day01初步接触python和环境的安装
- udp程序启动后检测都是未启动_【例子教程】联想Leez P710 物联网AI物体检测
- 侦听键盘,将data写入文件data.out(成功版本)
- 漫画:互联网公司会议观察
- LCS算法和背包算法
- 2021美赛C题解题记录(内含完整代码)
- 基于车辆运动学模型的LQR横向控制算法
- 剑指offer刷题(2)--面向华为
- 汕尾市海陆丰民间开胃小食摘录
- J Magn Reson Imaging:磁共振指纹(MRF)动脉自旋标记(ASL)的灌注特性估计
- 【工具】60 个相见恨晚的神器工具