题解:洛谷 P5735 【深基7.例1】距离函数
【题目来源】
【题目描述】
给出平面坐标上不在一条直线上三个点坐标 \((x_1,y_1),(x_2,y_2),(x_3,y_3)\),坐标值是实数,且绝对值不超过 \(100.00\),求围成的三角形周长。保留两位小数。
对于平面上的两个点 \((x_1,y_1),(x_2,y_2)\),则这两个点之间的距离\(dis =\sqrt {(x_2-x_1)^2+(y_2-y_1)^2}\)
【输入】
输入三行,第 \(i\) 行表示坐标 \((x_1,y_1)\),以一个空格隔开。
【输出】
输出一个两位小数,表示由这三个坐标围成的三角形的周长。
【输入样例】
0 0
0 3
4 0
【输出样例】
12.00
【算法标签】
《洛谷 P5735 距离函数》 #模拟#
【代码详解】
#include <bits/stdc++.h> // 包含标准库头文件(万能头文件)
using namespace std; // 使用标准命名空间
/**
* 计算两点之间的欧式距离
* @param x1 第一个点的x坐标
* @param y1 第一个点的y坐标
* @param x2 第二个点的x坐标
* @param y2 第二个点的y坐标
* @return 两点之间的距离
*/
double dis(double x1, double y1, double x2, double y2);
int main()
{
double x1, x2, x3, y1, y2, y3; // 定义变量:三个点的坐标
double ab, ac, bc; // 定义变量:存储三条边的长度
double ans; // 定义变量:存储三角形周长
// 输入三个点的坐标
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
// 计算三条边的长度
ab = dis(x1, y1, x2, y2); // 边AB的长度
ac = dis(x1, y1, x3, y3); // 边AC的长度
bc = dis(x2, y2, x3, y3); // 边BC的长度
// 计算三角形周长
ans = ab + ac + bc;
// 输出结果,保留两位小数
printf("%.2f", ans);
return 0; // 程序正常结束
}
/**
* 计算两点之间的欧式距离
* @param x1 第一个点的x坐标
* @param y1 第一个点的y坐标
* @param x2 第二个点的x坐标
* @param y2 第二个点的y坐标
* @return 两点之间的距离
*/
double dis(double x1, double y1, double x2, double y2)
{
double ans; // 定义变量:存储距离计算结果
// 计算两点间距离的平方
ans = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
// 开平方得到实际距离
ans = sqrt(ans);
return ans; // 返回计算结果
}
【代码运行】
0 0
0 3
4 0
12.00
浙公网安备 33010602011771号