三角形面积
GESP二级练习,数学函数练习,难度★✮☆☆☆。
luogu-B3638 三角形面积
题目要求
题目描述
给定平面直角坐标系上的三个整点 的坐标,求其围成的三角形面积。
数据保证答案一定是整数。所以如果你采用了浮点数来计算,请四舍五入到整数。
两点之间的距离公式: 之间的距离是
海伦公式: 若三角形的边长为 ,则三角形的面积是 ,其中 .
输入格式
共三行,每行表示一个三角形上的点。 每行包含两个正整数,表示点的坐标,形式为
x y
。
输出格式
共一行,一个整数,表示三角形面积。
样例输入 #1
10 20
30 40
50 50
样例输出 #1
100
样例解释
可以通过海伦公式计算面积。方法如下。
距离:
距离:
距离:
应用海伦公式,
求出近似面积: ,故答案为 。
数据规模与约定
对于 的数据:每个点的 坐标值一定在 之内,均为整数;答案一定为正整数。
题目分析
- 读取三个点的坐标
- 使用sqrt函数计算三个点之间的距离
- 计算三角形的半周长
- 使用sqrt函数计算三角形的面积
- 输出三角形的面积
{% include custom/custom-post-content-inner.html %}
示例代码
#include <cmath>
#include <cstdio>
#include <iostream>
using namespace std;
int main() {
// 读取三个点的坐标
int x1, y1, x2, y2, x3, y3;
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
// 计算三个点之间的距离
double a, b, c;
a = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); // 计算AB距离
b = sqrt((x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3)); // 计算AC距离
c = sqrt((x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3)); // 计算BC距离
// 计算三角形的半周长
double tmp = (a + b + c) / 2;
// 计算三角形的面积
double s = sqrt(tmp * (tmp - a) * (tmp - b) * (tmp - c));
// 输出三角形的面积
printf("%.0f", s);
return 0;
}
{% include custom/custom-post-content-footer.md %}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
“luogu-”系列题目可在 洛谷题库 在线评测。
“bcqm-”系列题目可在 编程启蒙题库 在线评测。
GESP/CSP 认证学习微信公众号

Last updated on