1515: 距离计算
1.描述
给定一个线段,两端点分别是(x1,y1),(x2,y2),求某点至该线段的最短和最长距离,该点的坐标是(x0,y0), 保证线段上的两端点不互相重合。
输入
依次给出x0,y0,x1,y1,x2,y2的坐标,依照题目描述求出最短和最长距离
输出
输出保留两位小数
样例输入
1.0 2.0 1.0 2.0 3.0 2.0
1.0 2.0 3.0 0.0 5.0 0.0
1.0 2.0 0.0 0.0 3.0 0.0
样例输出
0.00 2.00
2.83 4.47
2.00 2.83
提示
三角形面积公式:S=1/2fabs((x1y0+x0y2+x2y1-x1y2-x0y1-x2*y0));
2.代码
#include<stdio.h>
#include<math.h>
int main()
{
double x,y,x1,y1,x2,y2,h,max,min,s;
double n1,n2,n3;
while(~scanf("%lf %lf %lf %lf %lf %lf",&x,&y,&x1,&y1,&x2,&y2))
{
n1=sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));
n2=sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2));
n3=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
if(n1*n1+n3*n3<n2*n2)
{
min=n1;
max=n2;
}
else if(n2*n2+n3*n3<n1*n1)
{
min=n2;
max=n1;
}
else
{
s=fabs(x1*y+x*y2+x2*y1-x1*y2-x*y1-x2*y);
min=s/n3;
max=n2>n1?n2:n1;
}
printf("%.2lf %.2lf\n",min,max);
}
return 0;
}
博客围绕1515距离计算问题展开,给定线段两端点坐标及某点坐标,要求计算该点到线段的最短和最长距离。给出输入输出格式及样例,还提示了三角形面积公式,最后包含实现该计算的C语言代码。
1万+

被折叠的 条评论
为什么被折叠?



