关于#c++#的问题,请各位专家解答!


Problem C: 计算三角形面积
Time Limit: 1 Sec  Memory Limit: 128 MB
  

Description
               平面上有一个三角形,它的三个顶点坐标分别为(x1, y1), (x2, y2), (x3, y3),那么请问这个三角形的面积是多少。
Input
输入仅一行,包括6个单精度浮点数,分别对应x1, y1, x2, y2, x3, y3。
Output
输出也是一行,输出三角形的面积,精确到小数点后两位。
Sample Input
0 0 4 0 0 3
Sample Output
6.00


#include <bits/stdc++.h>
using namespace std;

int main()
{
    float x1,x2,x3,y1,y2,y3,q,sum,summ,summm,s;
    cin>>x1>>y1>>x2>>y2>>x3>>y3;
    sum=fabs(x1*x1-y1*y1);
    sum=sqrt(sum);
    summ=fabs(x2*x2-y2*y2);
    summ=sqrt(summ);
    summm=fabs(x3*x3-y3*y3);
    summm=sqrt(summm);
    q=sum+summ+summm;
    q=q*0.5;
    s=q*(q-sum);
    s=s*(q-summ);
    s=s*(q-summm);
    s=fabs(s);
    s=sqrt(s);
    cout<<fixed<<setprecision(2)<<s;
    return 0;
}

请问我这里哪错了?

这题应该用勾股定理和海伦公式:
代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    double x1,x2,x3,y1,y2,y3,l1,l2,l3,ans=0.0,p;
    cin>>x1>>y1>>x2>>y2>>x3>>y3;
    l1=sqrt(pow(fabs(x2-x1),2)+pow(fabs(y2-y1),2));
    l2=sqrt(pow(fabs(x2-x3),2)+pow(fabs(y2-y3),2));
    l3=sqrt(pow(fabs(x3-x1),2)+pow(fabs(y3-y1),2));
    p=(l1+l2+l3)/2.0;
    ans=sqrt(p*(p-l1)*(p-l2)*(p-l3));
    printf("%.2lf\n",ans);
}

没问题好吧

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7534358
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C++ 快速排序最简单易懂的算法代码!+详细解答
  • 您还可以看一下 王健伟老师的C++语言基础到进阶课程中的 模板概念,函数模板定义、调用小节, 巩固相关知识点
  • 除此之外, 这篇博客: 【C++入门第一课】命名空间、输入输出、缺省参数,函数重载中的 3.1 缺省参数的概念 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    问题所在在于计算三角形面积的公式上有误。

    下面是对代码的修改建议:

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        float x1,x2,x3,y1,y2,y3,s;
        cin>>x1>>y1>>x2>>y2>>x3>>y3;
    
        // 使用海伦公式计算三角形面积
        float a = sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
        float b = sqrt((x1-x3)*(x1-x3) + (y1-y3)*(y1-y3));
        float c = sqrt((x2-x3)*(x2-x3) + (y2-y3)*(y2-y3));
    
        float p = (a + b + c) / 2; // 半周长
        s = sqrt(p * (p-a) * (p-b) * (p-c)); // 海伦公式
    
        cout<<fixed<<setprecision(2)<<s;
        return 0;
    }
    

    注意,你之前的代码有一些无用的变量和计算,也没有使用正确的计算公式。上面的修改建议使用了正确的海伦公式来计算三角形的面积。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^