计算圆周点时输出不对

时间:2013-12-16 20:24:59

标签: c math

我在这个程序中没有得到正确的输出,我必须计算输入的点是在圆内还是在圆外,或者在给定圆心和圆半径的圆的边界上输入的点。它有时给出正确的答案,而有时则不给予。例如,如果我输入(0,0)作为中心并将半径= 10并检查点(10,0),则表示该点位于圆外。 Dunno为什么会发生这种情况,因为在其他情况下检查它给出了正确的答案。这是程序的源代码 -

#include<stdio.h>

main()
{
    float x1,y1,x2,y2,r,z;

    printf("Please Enter The X And Y Coordinates Of The Centre Of The Circle = ");

    scanf("%f%f",&x1,&y1);

    printf("\nPlease Enter The Radius Of The Circle = ");

    scanf("%f",&r);

    printf("\nPlease Enter The Coordinates Of The Point You Want To Check");

    scanf("%f%f",&x2,&y2);

    z=x1*x1+x2*x2-2*x1*x2+y1*y1+y2*y2-2*y1*y2;

    if(z*z==r*r)
        printf("\nThe Point Entered Lies On The Boundary Of The Circle Described");

    else if(z*z>r*r)
        printf("\nThe Point Entered Is Outside The Circle Described");

    else
        printf("\nThe Point Entered Lies Inside The Circle");

}

1 个答案:

答案 0 :(得分:2)

更改条件

 if(z*z==r*r)  

 if(z==r*r)  

 else if(z*z>r*r)  

 else if(z>r*r)

因为z已经是你计算的两点之间距离的平方。