问题标题: 1729 三角形面积(三边版本)我哪里错了???(我0分)

0
0
已解决
陶旭杰
陶旭杰
中级光能
中级光能

题目描述 Description

已知三角形三边长a,b,c,要求三角形面积。如果无法计算,输出“No”。

输入描述 Input Description

三角形三边长度a,b,c,三个数字用空格隔开(1<=a,b,c,<=10000)

输出描述 Output Description

一行,一个数字,三角形的面积,保留2位小数
如果无法输出则输出No。

样例输入 Sample Input

 

3 4 5

样例输出 Sample Output

 

6.00

代码:

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    double a,b,c,d;
    cin>>a>>b>>c;
    if(a+b>c&&a+c>b&&b+c>a)
    {
        d=(a+b+c)/2;
        printf("%.2f",d);
        }
    else
    cout<<"NO";
    return 0;
}

 


3
已采纳
詹子都
詹子都
新手光能
新手光能

错误:1.

公式运用错误

第十行后加上:d=sqrt(d*(d-a)*(d-b)*(d-c));

头文件加上

#include <cmath>

2.

输出错误:

cout<<"No";

3
王子轩
王子轩
新手光能
新手光能

1.无法输出是输出No而不是NO

2.d=(a+b+c)/2;加 s=sqrt(d*(d-a)*(d-b)*(d-c));最后输出s不是d

注意:sqrt的头文件是cmath

1
李翊冉
李翊冉
初级守护
初级守护

先判断能否组成三角形

再用海伦公式:d=(a+b+c)/2;加 s=sqrt(d*(d-a)*(d-b)*(d-c));

0
0
-2
陆麟瑞
陆麟瑞
资深天翼
资深天翼

先判断是否合法:

if(a+b<=c||a+c<=b||b+c<=a)
    {
        cout<<"No";
        return 0;
    }

再用海伦公式

p=(a+b+c)/2.0;
s=sqrt(p*(p-a)*(p-b)*(p-c));
我要回答