#2178: 為什麼錯了


poiu790621 (歪歪)

學校 : 中華大學
編號 : 5243
來源 : [140.126.21.236]
最後登入時間 :
2011-05-27 11:21:59
a006. 一元二次方程式 | From: [220.136.218.87] | 發表日期 : 2009-07-20 11:26

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<iostream>
using namespace std;

int main(){
float a, b, c, d, e, f;
while(cin >>a >>b >>c){
  d = sqrt(b*b-a*4*c);
  e = (-b+d)/2*a;
  f = (-b-d)/2*a;      
  if(d<0)
       cout <<"No real root" <<endl;          
  else if(d>0){
      if(e>f)
       cout << "Two different roots x1=" << e << " , x2=" << f << endl;
      else if(e<f)
       cout << "Two different roots x1=" << f << " , x2=" << e << endl;
  }
  else if(d==0){
       if(b==0)cout << "Two same roots x=" << b/2*a << endl;
       else cout << "Two same roots x=" << -b/2*a << endl;}
}      
return 0;
}

他的No real root一直跑不出來,而且最後一項一直跑出

*** 第 5 點 (20%):WA
與正確輸出不相符(line:1)
您的答案為: Two same roots x=-4
正確答案為: Two same roots x=-1

請問能告訴我為什麼嗎?

謝謝 > < 

 
#2182: Re:為什麼錯了


david942j (文旋)

學校 : 臺北市立成功高級中學
編號 : 6086
來源 : [115.43.75.16]
最後登入時間 :
2017-02-18 13:17:39
a006. 一元二次方程式 | From: [58.115.138.158] | 發表日期 : 2009-07-21 17:22

#include
#include
#include
#include
using namespace std;

int main(){
float a, b, c, d, e, f;
while(cin >>a >>b >>c){
  d = sqrt(b*b-a*4*c);
  e = (-b+d)/2*a;
  f = (-b-d)/2*a;      
  if(d<0)
       cout <<"No real root" <  else if(d>0){
      if(e>f)
       cout << "Two different roots x1=" << e << " , x2=" << f << endl;
      else if(e       cout << "Two different roots x1=" << f << " , x2=" << e << endl;
  }
  else if(d==0){
       if(b==0)cout << "Two same roots x=" << b/2*a << endl;
       else cout << "Two same roots x=" << -b/2*a << endl;}
}      
return 0;
}

他的No real root一直跑不出來,而且最後一項一直跑出

*** 第 5 點 (20%):WA
與正確輸出不相符(line:1)
您的答案為: Two same roots x=-4
正確答案為: Two same roots x=-1

請問能告訴我為什麼嗎?

謝謝 > < 


/2*a不等於/(2*a) 
ZeroJudge Forum