题目四、三角形面积
描述
给你三个点,表示一个三角形的三个顶点,现你的任务是求出该三角形的面积
输入
每行是一组测试数据,有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; }