题解 | #线线线#

线线线

https://www.nowcoder.com/practice/6600857a0cc74a15b3418d5c617ab427

思想:

思想:这里主要是分为三步来进行求解1.计算出每一条直线的表达式2.计算线段两两之间的交点3.根据三个交点利用公式来计算出面积

#include <bits/stdc++.h>

using namespace std;

// 计算两条直线的交点
pair<double, double> intersection(double A1, double B1, double C1, double A2, double B2, double C2) {
    double det = A1 * B2 - A2 * B1;
    if (det == 0) {
        throw runtime_error("Lines are parallel");
    }
    double x = (B1 * C2 - B2 * C1) / det;
    double y = (A2 * C1 - A1 * C2) / det;
    return {x, y};
}

// 计算三角形面积
double triangleArea(double x1, double y1, double x2, double y2, double x3, double y3) {
    return 0.5 * fabs(x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2));
}

int main() {
    // 输入点坐标
    double x11, y11, x12, y12;
    double x21, y21, x22, y22;
    double x31, y31, x32, y32;

    cin >> x11 >> y11; 
    cin >> x12 >> y12;
    cin >> x21 >> y21;
    cin >> x22 >> y22;
    cin >> x31 >> y31;
    cin >> x32 >> y32;

    // 求直线方程系数
    double A1 = y12 - y11, B1 = x11 - x12, C1 = x12 * y11 - x11 * y12;
    double A2 = y22 - y21, B2 = x21 - x22, C2 = x22 * y21 - x21 * y22;
    double A3 = y32 - y31, B3 = x31 - x32, C3 = x32 * y31 - x31 * y32;

    // 求三条直线的交点
    pair<double, double> p1 = intersection(A1, B1, C1, A2, B2, C2);
    pair<double, double> p2 = intersection(A2, B2, C2, A3, B3, C3);
    pair<double, double> p3 = intersection(A3, B3, C3, A1, B1, C1);

    // 计算三角形面积
    double area = triangleArea(p1.first, p1.second, p2.first, p2.second, p3.first, p3.second);

    // 输出面积
    cout << fixed << setprecision(6) << area << endl;

    return 0;
}

全部评论

相关推荐

入职华为的第一步:投递
投递华为技术有限公司等公司10个岗位
点赞 评论 收藏
分享
09-19 12:15
门头沟学院 Java
猫头夜鹰:请问收到意向要点接受拒绝吗,还是开奖之后再接受拒绝
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务