今日学习在线编程题:空间三角形

题目:空间三角形
超时限制:1000ms
内存限制:65535kb
题目描述:输入在三维空间的三角形三个顶点A,B,C的坐标(x,y,z),计算并输出三角形面积。
输入格式:依次输入三个顶点A,B,C的坐标(x,y,z),整型,空格分隔。
输出格式:输出实型,保留2位小数。
输入样例:0 0 0 0 0 3 3 0 0

输出样例:4.50

提示    $$4S^2^=(a1b2+b1c2+c1a2-a1c2-c1b2-b1a2)^2^+(a2b3+b2c3+c2a3-a2c3-c2b3-b2a3)^2^+(a1b3+b1c3+c1a3-a1c3-c1b3-b1a3)^2^.$$

参考程序:

#include 
#include 

struct POINT {
    int x[3];
};
inline double part(POINT p1, POINT p2, POINT p3, int ind1, int ind2){
    int tmp = p1.x[ind1] * p2.x[ind2] + p2.x[ind1] * p3.x[ind2] + p3.x[ind1] * p1.x[ind2] -
            p1.x[ind1] * p3.x[ind2] - p3.x[ind1] * p2.x[ind2] - p2.x[ind1] * p1.x[ind2];
    return tmp * tmp * 1.0;
}

int main() {
    POINT point[4];

    for(int i=0; i<3; ++i){
        scanf("%d %d %d", &point[i].x[0], &point[i].x[1], &point[i].x[2]);
    }
    double s = 0;
    s += part(point[0], point[1], point[2], 0, 1);
    s += part(point[0], point[1], point[2], 1, 2);
    s += part(point[0], point[1], point[2], 0, 2);

    s = sqrt(s);
    printf("%.2lf\n", s/2);
    return 0;
}

来源:码蹄集

https://matiji.net/exam/brushquestion/52/778/B3FCFEC101BD05189BB74D522E019504

你可能感兴趣的:(在线编程,c语言)