三角形面积

题目四、三角形面积

描述

给你三个点,表示一个三角形的三个顶点,现你的任务是求出该三角形的面积

输入

每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别表示三个点的横纵坐标。(坐标值都在0到10000之间)
输入0 0 0 0 0 0表示输入结束
测试数据不超过10000组

输出

输出这三个点所代表的三角形的面积,结果精确到小数点后1位(即使是整数也要输出一位小数位)

样例输入

0 0 1 1 1 3

0 1 1 0 0 0

0 0 0 1 1 0

1000 1000 56 55 10000 78

2 3  3 2 10 10

0 0 0 0 0 0

样例输出

1.0

0.5

0.5

4687684.0

7.5

解题思路:

这题的输入都在double范围内,所以数据可以用double类型储存,对于每个点用一个结构体存储,可以增加代码的可读性,同时也可以让思路更清晰,本题采用的数学方法是海伦秦昭九公式,若三角形的三边距离是a, b,c那么p  =  0.5 * (a + b + c),则三角形的面积s = sqrt(p * (p - a) * (p - b) * (p - c))

代码:

#include <cstdio>
int main() {
    long long n;
    scanf("%lld", &n);
    if (n == 0){ // 0是特例,特殊判断 
        printf("O\n");
    } else {
        while (n != 0) {
            switch(n % 10) {//获得最后一位 
                case 0:printf("O");break;
                case 1:printf("O");break;
                case 2:printf("T");break;
                case 3:printf("T");break;
                case 4:printf("F");break;
                case 5:printf("F");break;
                case 6:printf("S");break;
                case 7:printf("S");break;
                case 8:printf("E");break;
                case 9:printf("N");break;
            }
            n /= 10; //修正循环变量n 
        }
    }
    printf("\n");
    return 0;
}
原文地址:https://www.cnblogs.com/MATLABlearning001/p/5396951.html