【洛谷 B2031】计算三角形面积 题解(顺序结构+海伦公式)

计算三角形面积

题目描述

平面上有一个三角形,它的三个顶点坐标分别为 ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) (x_1,y_1),(x_2,y_2),(x_3,y_3) (x1,y1),(x2,y2),(x3,y3),那么请问这个三角形的面积是多少。

输入格式

输入仅一行,包括 6 6 6 个双精度浮点数,分别对应 x 1 , y 1 , x 2 , y 2 , x 3 , y 3 x_1,y_1,x_2,y_2,x_3,y_3 x1,y1,x2,y2,x3,y3

输出格式

输出也是一行,输出三角形的面积,精确到小数点后两位。

样例 #1

样例输入 #1

0 0 4 0 0 3

样例输出 #1

6.00

思路

在main函数中,声明了多个float类型的变量,用于存储用户输入的坐标和计算结果。

使用scanf函数从标准输入读取6个浮点数,分别为三个顶点的坐标(x1, y1),(x2, y2),(x3, y3),并将它们分别存储到对应的变量中。

然后,调用自定义函数AB,计算三个边的长度a、b、c。

接下来,计算半周长p,即三边长度之和的一半。

然后,使用sqrt函数计算面积s,通过海伦公式:s = sqrt(p * (p - a) * (p - b) * (p - c))。

最后,使用printf函数将面积s的值以%.2f的格式打印出来,保留两位小数。


AC代码

#include 
#include 
#include 
#define AUTHOR "HEX9CF"
using namespace std;

float AB(float x1, float x2, float y1, float y2)
{
    return sqrt(pow((x1 - x2), 2) + pow((y1 - y2), 2));
}

int main()
{
    float x1, x2, x3, y1, y2, y3, a, b, c, p, s;
    scanf("%f%f%f%f%f%f", &x1, &y1, &x2, &y2, &x3, &y3);
    a = AB(x1, x2, y1, y2);
    b = AB(x1, x3, y1, y3);
    c = AB(x3, x2, y3, y2);
    p = (a + b + c) / 2;
    s = sqrt((p * (p - a) * (p - b) * (p - c)));
    printf("%.2f", s);
    return 0;
}

你可能感兴趣的:(Data,Structure,and,Algorithm,算法)