猫史档案馆


【C++】oj1014教程

用户:一个不爱kitten的平哥一个不爱kitten的平哥查看:0 回复:1 评论:0 创建时间:2023-03-19T16:09:38


描述

平面上有一个三角形,它的三个顶点坐标分别为(x1, y1), (x2, y2), (x3, y3),那么请问这个三角形的面积是多少,精确到小数点后两位。

输入

输入仅一行,包括6个浮点数,分别对应x1, y1, x2, y2, x3, y3。

输出

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

输入样例 1 

0 0 4 0 0 3

输出样例 1

6.00

这道题需要一定的数学基础,基本的输入输出代码如下:

#include <iostream>//用于输入输出
#include <cmath>//用于计算,后面会用到
#include <iomanip>//用于保留小数,后面也会用到
using namespace std;
int main(){
	double x1,y1,x2,y2,x3,y3,a,b,c,p,ans;//这些变量在后面都会用到
	cin>>x1>>y1>>x2>>y2>>x3>>y3;

 首先已知三个点的x和y,那么便可以用勾股定理(a2+b2=c2)计算出边的长度

先以(x1,y1),(x2,y2)两个点举例,|x2-x1|便可看作是a,|y2-y1|便可看作是b

(之所以要取绝对值是因为有可能出现负数)

那么根据以上例子,便可以得到三角形三边的长度了,代码如下:

a = fabs(sqrt(pow(fabs(y2 - y1),2) + pow(fabs(x2 - x1),2)));
b = fabs(sqrt(pow(fabs(y2 - y3),2) + pow(fabs(x2 - x3),2)));
c = fabs(sqrt(pow(fabs(y1 - y3),2) + pow(fabs(x1 - x3),2)));

 那么可能有同学会问了,知道了三条边的长度跟求面积有啥关系?

还真有关系,这个时候我们就需要用到海喵式了:

S=√p(p-a)(p-b)(p-c),其中a、b、c指三边的长,p表示周长的一半,即(a+b+c)/2

那么接下来代码就很好写了,如下:

p = (a + b + c) / 2;
ans = sqrt(p*(p-a)*(p-b)*(p-c));
cout<<fixed<<setprecision(2)<<ans;

(注意题目要求保留两位小数输出)

于是这道题就做完了(没错这就完了)

第一次写教程如有错误请指出,不喜勿喷)))


回复

上一页1 页 / 共 1下一页
一个不爱kitten的平哥一个不爱kitten的平哥

海 伦 公 式

点赞0


评论