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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章