1515: 距离计算

博客围绕1515距离计算问题展开,给定线段两端点坐标及某点坐标,要求计算该点到线段的最短和最长距离。给出输入输出格式及样例,还提示了三角形面积公式,最后包含实现该计算的C语言代码。

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汤米先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值