共回答了14个问题采纳率:100%
/*
AC中点M,BD中点N,BA、CD延长后交于R
验证area(ABCD)==4*area(RMN)
*/#include
#include
#include
#define EPS 1e-10typedef struct
{
double x;
double y;
} Point;/*两点之间的直线距离*/
double length(Point *A,Point *B)
{
return sqrt(pow(A->x-B->x,2)+pow(A->y-B->y,2));
}double area_of_triangle(Point A,Point B,Point C)
{
double area,a,b,c,p;
a=length(&B,&C);
b=length(&C,&A);
c=length(&A,&B);
p=(a+b+c)/2;
area=sqrt(p*(p-a)*(p-b)*(p-c));
return area;
}/*初步检测四边形*/
int ok(Point *p)
{
double side[4];/*4边长*/
int i,j;
for(i=0;iEPS)
{
fprintf(stderr,"凹四边形!不行!");
exit(2); /*异常结束2*/
}/*这里计算△RMN的面积*/
rmn = area_of_triangle(r,m,n);/*这里是二者相除,看它是否非常接近于4.00*/
printf("as a resultABCD:RMN=%4.2f:%4.2f=%4.2f"
,abcd,rmn,abcd/rmn);}/*运行情况举例
input (x,y) of point A:0,0
input (x,y) of point B:2,0
input (x,y) of point C:1.5,1.5
input (x,y) of point D:0.5,1
as a result
ABCD:RMN=1.87:0.47=4.00
Press any key to continue
*/
参考于: http://bbs.bccn.net/thread-75642-2-1.html
1年前
4