#21966: 為何是WA求解<C++>


nihscs109021 (嘿~~)

學校 : 臺北市立內湖高級工業職業學校
編號 : 124565
來源 : [220.132.35.178]
最後登入時間 :
2020-11-14 16:31:57
a006. 一元二次方程式 | From: [220.132.35.178] | 發表日期 : 2020-08-06 10:59

程式碼:

#include <iostream>

 

#include <cmath>

 

using namespace std;

 

int main()

{

 int a,b,c,x1,x2;

 cin>>a>>b>>c;

 x1=(-b+sqrt((b*b)-(4*a*c)))/(2*a);

 x2=(-b-sqrt((b*b)-(4*a*c)))/(2*a);

  if(x1!=x2)

 {

  cout<<"Two different roots x1="<<x1<<" , x2="<<x2;

 }

else if(x1==x2)

  {

   cout<<"Two same roots x="<<x1;

  }

   else

   {

     cout<<"no real root";

   }

}

#2說是要顯示No real root,但我的答案卻是Two same roots x=[]

 
#21968: Re:為何是WA求解<C++>


d2513850 (林勇智)

學校 : 崑山科技大學
編號 : 5102
來源 : [27.53.131.137]
最後登入時間 :
2024-11-17 10:12:31
a006. 一元二次方程式 | From: [163.26.71.40] | 發表日期 : 2020-08-06 12:13

程式碼:

#include

 

#include

 

using namespace std;

 

int main()

{

 int a,b,c,x1,x2;

 cin>>a>>b>>c;

 x1=(-b+sqrt((b*b)-(4*a*c)))/(2*a);

 x2=(-b-sqrt((b*b)-(4*a*c)))/(2*a);

  if(x1!=x2)

 {

  cout<<"Two different roots x1="<<x1<<" , x2="<<x2;

 }

else if(x1==x2)

  {

   cout<<"Two same roots x="<<x1;

  }

   else

   {

     cout<<"no real root";

   }

}

#2說是要顯示No real root,但我的答案卻是Two same roots x=[]

a,b,c應該用"double"宣告

另外虛擬碼應該是:

判斷a是否為0:

a!=0:

算判別式:d=pow(b,2.0f)-4.0f*a*c;(pow()應該在<cmath>標頭檔找到)

d是否大於0:

d>0:

解x:r[0]=(-b+pow(d,0.5f))/(2.0f*a);r[1]=(-b-pow(d,0.5f))/(2.0f*a);

輸出:"Two different roots x1=r[0] , x2=r[1]"

d=0:

解x:r[0]=(-b+pow(d,0.5f))/(2.0f*a)

輸出:"Two same roots x=r[0]"

d<0:

輸出:"No real root"

a=0:

a是否為0:

b!=0:

解x:r[0]=(-b+pow(d,0.5f))/(2.0f*a)

輸出:"Two same roots x=r[0]"

b=0:

輸出:"No real root"

 

 

 
#22452: Re:為何是WA求解<C++>


800119@ms6.pmsh.khc.edu.tw (22葉至鈞108)

學校 : 不指定學校
編號 : 129157
來源 : [203.72.122.244]
最後登入時間 :
2020-09-05 18:44:49
a006. 一元二次方程式 | From: [203.72.122.244] | 發表日期 : 2020-09-05 19:00

程式碼:

#include

 

#include

 

using namespace std;

 

int main()

{

 int a,b,c,x1,x2;

 cin>>a>>b>>c;

 x1=(-b+sqrt((b*b)-(4*a*c)))/(2*a);

 x2=(-b-sqrt((b*b)-(4*a*c)))/(2*a);

  if(x1!=x2)

 {

  cout<<"Two different roots x1="<<x1<<" , x2="<<x2;

 }

else if(x1==x2)

  {

   cout<<"Two same roots x="<<x1;

  }

   else

   {

     cout<<"no real root";

   }

}

#2說是要顯示No real root,但我的答案卻是Two same roots x=[]

a,b,c應該用"double"宣告

另外虛擬碼應該是:

判斷a是否為0:

a!=0:

算判別式:d=pow(b,2.0f)-4.0f*a*c;(pow()應該在標頭檔找到)

d是否大於0:

d>0:

解x:r[0]=(-b+pow(d,0.5f))/(2.0f*a);r[1]=(-b-pow(d,0.5f))/(2.0f*a);

輸出:"Two different roots x1=r[0] , x2=r[1]"

d=0:

解x:r[0]=(-b+pow(d,0.5f))/(2.0f*a)

輸出:"Two same roots x=r[0]"

d<0:

輸出:"No real root"

a=0:

a是否為0:

b!=0:

解x:r[0]=(-b+pow(d,0.5f))/(2.0f*a)

輸出:"Two same roots x=r[0]"

b=0:

輸出:"No real root"

  恩恩

 



 
ZeroJudge Forum