#5245: 為什麼會錯


pentiumone (TK)

學校 : 不指定學校
編號 : 19235
來源 : [122.146.209.178]
最後登入時間 :
2015-10-08 17:45:06
a006. 一元二次方程式 | From: [122.201.233.129] | 發表日期 : 2011-06-28 00:05

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    double a, b, c, ans_1, ans_2;
    while(cin >> a >> b >> c)
    {
        ans_1 =(-b+sqrt(pow(b, 2)-(4*a*c)))/2*a;
        ans_2 =(-b-sqrt(pow(b, 2)-(4*a*c)))/2*a;
        if(pow(b, 2)-(4*a*c)<0)
            cout << "No real root" << endl;    
        else if(ans_1 == ans_2)
            cout << "Two same roots x=" << ans_1 << endl;
        else
            cout << "Two different roots x1=" << ans_1 << " , x2=" << ans_2 << endl;
    }
    return 0;
}

程式碼如上

我在自己電腦試都沒問題  可是第5個測資一直說我答案錯了 

可以幫我看一下嗎?

 
#5263: Re:為什麼會錯


pentiumone (TK)

學校 : 不指定學校
編號 : 19235
來源 : [122.146.209.178]
最後登入時間 :
2015-10-08 17:45:06
a006. 一元二次方程式 | From: [218.210.246.32] | 發表日期 : 2011-07-01 15:23

#include
#include
using namespace std;
int main()
{
    double a, b, c, ans_1, ans_2;
    while(cin >> a >> b >> c)
    {
        ans_1 =(-b+sqrt(pow(b, 2)-(4*a*c)))/2*a;
        ans_2 =(-b-sqrt(pow(b, 2)-(4*a*c)))/2*a;
        if(pow(b, 2)-(4*a*c)<0)
            cout << "No real root" << endl;    
        else if(ans_1 == ans_2)
            cout << "Two same roots x=" << ans_1 << endl;
        else
            cout << "Two different roots x1=" << ans_1 << " , x2=" << ans_2 << endl;
    }
    return 0;
}

程式碼如上

我在自己電腦試都沒問題  可是第5個測資一直說我答案錯了 

可以幫我看一下嗎?

0.0
 
#5265: Re:為什麼會錯


abcd6891 (曄哥)

學校 : 國立花蓮高級中學
編號 : 3565
來源 : [61.231.222.61]
最後登入時間 :
2024-09-16 11:43:21
a006. 一元二次方程式 | From: [114.44.214.123] | 發表日期 : 2011-07-01 21:26

#include
#include
using namespace std;
int main()
{
    double a, b, c, ans_1, ans_2;
    while(cin >> a >> b >> c)
    {
        ans_1 =(-b+sqrt(pow(b, 2)-(4*a*c)))/2*a;
        ans_2 =(-b-sqrt(pow(b, 2)-(4*a*c)))/2*a;
        if(pow(b, 2)-(4*a*c)<0)
            cout << "No real root" << endl;    
        else if(ans_1 == ans_2)
            cout << "Two same roots x=" << ans_1 << endl;
        else
            cout << "Two different roots x1=" << ans_1 << " , x2=" << ans_2 << endl;
    }
    return 0;
}

程式碼如上

我在自己電腦試都沒問題  可是第5個測資一直說我答案錯了 

可以幫我看一下嗎?

0.0

ans_1 =(-b+sqrt(pow(b, 2)-(4*a*c)))/2*a;

ans_1 =(-b+sqrt(pow(b, 2)-(4*a*c)))/2*a;

改成

 

ans_1 =(-b+sqrt(pow(b, 2)-(4*a*c)))/(2*a);

 

運算子優先順序問題 

因為如果a不是1,會出錯 

 
ZeroJudge Forum