View Code of Problem 106

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    double x1,y1,x2,y2,r;
    while(scanf("%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&r)!=EOF)
    {
    double len=sqrt((pow((x1-x2),2)+(pow(y1-y2,2))));
    double angle=2.0*acos((len*len)/(2.0*r*len));
    double s1=0.5*r*r*sin(angle)*2;
    double s2=angle/2*r*r+angle/2*r*r;
    double s=s2-s1;
    if((x1==x2)&&(y1==y2))
    {
        printf("重合\n");
    }
    else if(len==2*r)
    {
        printf("相切\n");
    }
    else if(len>2*r)
    {
        printf("相离\n");
    }
    else if(len<2*r)
    {
        printf("相交 ");
        printf("%0.2lf\n",s);
    }
    }

    return 0;
}

Double click to view unformatted code.


Back to problem 106