题解:洛谷 P5735 【深基7.例1】距离函数

【题目来源】

洛谷: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
posted @ 2026-02-16 18:02  团爸讲算法  阅读(1)  评论(0)    收藏  举报