浮点型数据的精度控制问题

      

Problem G: 说好的点呢

Time Limit: 1 Sec   Memory Limit: 16 MB
Submit: 2380   Solved: 392
[ Submit][ Status][ Web Board]

Description

两点确定一条直线,判断一条直线与一个圆的位置关系。

Input

输入中前两行每行描述一个点的坐标(x,y),x,y均为实数。

第三行包含三个实数,即圆心坐标和圆的半径R>0。

Output

输出包含三种情况,计算误差应在1e-3(0.001)内。

“Interseetion”(相交时输出);

“Tangency”(相切时输出);

“Disjoint”(相离时输出);

以上输出不含引号。

Sample Input

1 00 10 0 1

Sample Output

Interseetion

HINT

回忆中学的几何知识,最好能自己先想到此题的几何解,实在想不到,可以查查法线方程之类的,然后用程序实现。这里要用到浮点数的精度控制。

Append Code

[ Submit][ Status][ Web Board]







#include<stdio.h>
#include<math.h>
int main()
{
     double xi,yi,xii,yii,x,y,k,d,m,n,r;
     scanf ( "%lf %lf" ,&xi,&yi);
     scanf ( "%lf %lf" ,&xii,&yii);
     scanf ( "%lf %lf %lf" ,&x,&y,&r);
     if (r>0)
     {
         if (xi==xii&&yi!=yii)
             //if(yi!=yii)
                 d= fabs (x)+ fabs (xi);
         else
         {
             k=(yi-yii)/(xi-xii);
             m= fabs (k*x+(-1)*y+yi-k*xi);
             n= fabs ( sqrt (k*k+1));
             d=m/n;
         }
         if (d>r+0.001)
             printf ( "Disjoint" );
         if (d<r-0.001)
             printf ( "Interseetion" );
         if ( fabs (d-r)<1e-3)
             printf ( "Tangency" );
 }
关于浮点型数据的精度控制问题,在浮点型数据中,两个数的比较需要进行精度控制,">"形式,m>n+精度;"<"形式,m<n-精度;"="形式,fabs(m-n)<精度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值