View Code of Problem 106

#include<stdio.h>
#include <string.h>
#include <math.h>
int main(){
	float x1,y1,x2,y2,r;
	double s;
	double ang;
	double d;
	while(scanf("%f%f%f%f%f",&x1,&y1,&x2,&y2,&r)!=EOF){
		if((x1==x2)&&(y1==y2)){
			printf("重合\n");
		}
		else{
		if(sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))>2*r){
			printf("相离\n");
		}
		if(sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))==2*r){
			printf("相切\n");
		}
		if(sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))<2*r){
			 d=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
			 ang=acos((d*d)/(2*r*d));
			 s=2*ang-r*d*sin(ang);
			 printf("相交 %.2f\n",s);
		} 
	}
}
	printf("\n");
	return 0;
}

Double click to view unformatted code.


Back to problem 106