SGU 151 - Construct a triangle

三角形中线定理:如果BC中点为M,则AB^2+AC^2=2*AM^2+2*BM^2

注意:三角形中线小于两夹边之和的一半大于两夹边之差的一半

#include <stdio.h>
#include <math.h>
typedef struct
{
    double x;
    double y;
}point;
int main()
{
    point A,B,C;
    double c,b,m,a;
    scanf("%lf%lf%lf",&c,&b,&m);
    if(2*m>c+b || 2*m<fabs(b-c))
        printf("Mission impossible\n");
    else
    {
        double t=(0.5*c*c+0.5*b*b-m*m);
        a=sqrt(t);
        B.x=-a;B.y=0;
        C.x=a;C.y=0;
        double x=(m*m+a*a-b*b)/(2*a);
        A.x=x;A.y=sqrt(m*m-x*x);
        if(a==0)
        {
            A.x=b; A.y=0;
        }
        printf("%.5lf %.5lf\n",A.x,A.y);
        printf("%.5lf %.5lf\n",B.x,B.y);
        printf("%.5lf %.5lf\n",C.x,C.y);
    }

    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值