#5033: 救救可憐人


wuchonson (一WS神教o無用(進建中記得加資訊))

學校 : 臺北市立忠孝國民中學
編號 : 14037
來源 : [210.71.78.242]
最後登入時間 :
2013-06-17 08:56:19
a006. 一元二次方程式 | From: [115.43.45.238] | 發表日期 : 2011-04-05 21:44

 歷經千辛萬苦寫出的程式

卻無情遭NA

*** 第 5 點 (20%):WA (line:1)
您的答案為: Two different roots x1=- ...略
正確答案為: Two same roots x=-1

WHY?

 以下是我的程式碼: 

#include <cstdlib>
#include <iostream>
#include <math.h>

using namespace std;

int main(int argc, char *argv[])
{
    double an1,an2;
    double a,b,c;
    while(cin>>a>>b>>c){
    an1 = (-b + sqrt( b * b - 4 * a * c)) / 2 * a;
    an2 = (-b - sqrt( b * b - 4 * a * c)) / 2 * a;
    if((b * b - 4 * a * c)<0) cout<<"No real root"<<endl;
    else if(an1==an2) cout<<"Two same roots x="<<an1<<endl;
    else if(an1!=an2) cout<<"Two different roots x1="<<an1<<" , x2="<<an2<<endl;
   
}
    
    
    
      return EXIT_SUCCESS;
}

 
#5034: Re:救救可憐人


past (遺憾的臭氧)

學校 : 臺北市立麗山高級中學
編號 : 8381
來源 : [111.250.64.129]
最後登入時間 :
2012-06-04 13:50:45
a006. 一元二次方程式 | From: [118.166.113.22] | 發表日期 : 2011-04-05 23:22

建議你改成判別式 > 0, = 0, < 0

不然浮點運算上一點微小的誤差就會導致 an1 != an2

 
ZeroJudge Forum