利用点求三角形面积

定义一个三角形的结构体,写一个求三角形面积的函数。
利用点求三角形面积
#import <Foundation/Foundation.h>
typedef struct
{
    float a;
    float b;
    float c;
} TriangleSide;
void areaOfTriangle(TriangleSide ss)
{
    float area = 0;
    if (ss.a<=0||ss.b<=0||ss.c<=0)
    {
        printf("不是三角形!");
    }else if(ss.a+ss.b<=ss.c||ss.a+ss.c<=ss.b||ss.b+ss.c<=ss.a)
    {
        printf("不是三角形!");
    }else
    {
        float p = (ss.a + ss.b + ss.c) / 2.0;
        area = sqrt(p*(p-ss.a)*(p-ss.b)*(p-ss.c));
        printf("AREA = %g",area);
    }
    
}
typedef struct
{
    int x1,y1;
    int x2,y2;
    int x3,y3;
} TrianglePoint;

TriangleSide demondSideWithPoint(TrianglePoint pp)
{
    TriangleSide ss;
    //求1.2之间的线段长度
    if (pp.x1>=pp.x2)//比较点坐标大小,用大数减掉小数;
    {
        int x12 = pp.x1 - pp.x2;
        if (pp.y1>=pp.y2)
        {
            int y12 = pp.y1 - pp.y2;
            ss.a = fabs(sqrt(x12 * x12 + y12 * y12));
        }else
        {
            int y12 = pp.y2 - pp.y1;
            ss.a = fabs(sqrt(x12 * x12 + y12 * y12));
            
        }
    }else
    {
        int x12 = pp.x2 - pp.x1;
        if (pp.y1>=pp.y2)
        {
            int y12 = pp.y2 - pp.y1;
            ss.a = fabs(sqrt(x12 * x12 + y12 * y12));
        }else
        {
            int y12 = pp.y2 - pp.y1;
            ss.a = fabs(sqrt(x12 * x12 + y12 * y12));
            
        }
    }
    //求1.3之间的线段长度
    if (pp.x1>=pp.x3)//比较点坐标大小,用大数减掉小数;
    {
        int x13 = pp.x1 - pp.x3;
        if (pp.y1>=pp.y3)
        {
            int y13 = pp.y1 - pp.y3;
            ss.b = fabs(sqrt(x13 * x13 + y13 * y13));
        }else
        {
            int y13 = pp.y3 - pp.y1;
            ss.b = fabs(sqrt(x13 * x13 + y13 * y13));
            
        }
    }else
    {
        int x13 = pp.x3 - pp.x1;
        if (pp.y1>=pp.y3)
        {
            int y13 = pp.y3 - pp.y1;
            ss.b = fabs(sqrt(x13 * x13 + y13 * y13));
        }else
        {
            int y13 = pp.y3 - pp.y1;
            ss.b = fabs(sqrt(x13 * x13 + y13 * y13));
            
        }
    }
    //求1.3之间的线段长度
    if (pp.x2>=pp.x3)//比较点坐标大小,用大数减掉小数;
    {
        int x23 = pp.x2 - pp.x3;
        if (pp.y2>=pp.y3)
        {
            int y23 = pp.y2 - pp.y3;
            ss.c = fabs(sqrt(x23 * x23 + y23 * y23));
        }else
        {
            int y23 = pp.y3 - pp.y2;
            ss.c = fabs(sqrt(x23 * x23 + y23 * y23));
            
        }
    }else
    {
        int x23 = pp.x3 - pp.x2;
        if (pp.y2>=pp.y3)
        {
            int y23 = pp.y3 - pp.y2;
            ss.c = fabs(sqrt(x23 * x23 + y23 * y23));
        }else
        {
            int y23 = pp.y3 - pp.y2;
            ss.c = fabs(sqrt(x23 * x23 + y23 * y23));
            
        }
    }
    return ss;
}

int main(int argc, const char * argv[])
{
    
    
    printf("Input three triangle point:\n");
    TrianglePoint p;
    scanf("%d%d%d%d%d%d",&p.x1,&p.y1,&p.x2,&p.y2,&p.x3,&p.y3);
    TriangleSide s = demondSideWithPoint(p);
    areaOfTriangle(s);
    
    return 0;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容