c++保留精度位 PTA 7-13 判断是否能构成三角形

7-13 判断是否能构成三角形 (20分)

输入三个正数,判断是否能够构成三角形;如果不能构成三角形则输出:Error;如果能够构成三角形则输入:三角形的面积;

输入格式:
输入三行,每行一个正数

输出格式:
一行计算结果

输入样例:

0.3
0.4
0.5

输出样例:

0.06

坑:
挺简单的题,一个点一直过不去,最后问了大佬才知道,c++做这个题要调整精度位,保留十五位精度。。。。。。
代码:

#include <bits/stdc++.h>
using namespace std;
bool Rec(double a,double b, double c)
{
    return a+b>c && a+c>b && b+c>a;
}
double area(double a,double c,double b){
    double x,d=(a+b+c)/2;
    x=d*(d-a)*(d-b)*(d-c);
    return pow(x,0.5);
}
int main() {
    double a,b,c;
    cin>>a>>b>>c;
    if(Rec(a,b,c)){
        stringstream g;
        g<<setprecision(15)<<area(a,b,c);
        string h=g.str();
        cout<<h<<endl;}
    else cout<<"Error"<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_46039856/article/details/106538003