#25428: ?????


antony9399@gmail.com (03楊騏安)

學校 : 不指定學校
編號 : 154634
來源 : [42.75.212.121]
最後登入時間 :
2021-06-04 10:34:18
a006. 一元二次方程式 | From: [42.75.177.113] | 發表日期 : 2021-05-21 08:22

#include <iostream>

#include <math.h> 

using namespace std;

 

int main()

{

int a,b,c,d;

float x1,x2;

cin a,b,c;

d=b*b-4*a*c;

x1=(-b+sqrt(d)/2*a)

x2=(-b-sqrt(d)/2*a)

 

if(sqrt(d)>0)

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

 

else if(sqrt(d)==0)

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

cout<<"No real root"

}

 
#25446: Re:?????


Tamilala (Tamilala不是星導夢女)

學校 : 國立臺南女子高級中學
編號 : 138845
來源 : [140.113.140.143]
最後登入時間 :
2024-11-09 01:15:30
a006. 一元二次方程式 | From: [218.164.175.55] | 發表日期 : 2021-05-22 11:14

#include <iostream>

#include <math.h>

using namespace std;

 

int main()

{

int a,b,c,d;

float x1,x2;

cin a,b,c;

d=b*b-4*a*c;

x1=(-b+sqrt(d)/2*a)

x2=(-b-sqrt(d)/2*a)

 

if(sqrt(d)>0)

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

 

else if(sqrt(d)==0)

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

cout<<"No real root"

}

 

首先,第9行

cin a,b,c;

這裡,用cin輸入的用法應該是

cin>>變數1>>變數2......>>變數n;

所以應該改成

cin>>a>>b>>c;

 

再來,這裡

x1=(-b+sqrt(d)/2*a)

x2=(-b-sqrt(d)/2*a)

後面都沒有分號喔

 


還有最後幾行

else if(sqrt(d)==0)

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

cout<<"No real root"

這裡,應該是

else if(sqrt(d)==0) cout<<"Two same roots x="<<x1<<endl;

else cout<<"No real root";

這樣吧?

因為如果按原本這樣寫,不管怎樣都會在最後輸出一個"No real root"

所以應該要加上一個判斷,就是如果(sqrt(d)==0)跟(sqrt(d)==0)都不成立,也就是判別式小於0時才輸出"No real root"

 

大致這樣,希望有解決你的問題!

 

另外記得養成個好習慣,在主函式結束時加上一個

return 0;

來告訴電腦你這隻程式執行完沒有問題ㄛ。

可以參考這篇:www. itread01.com/content/1505890834. html

 
#25447: Re:?????


Tamilala (Tamilala不是星導夢女)

學校 : 國立臺南女子高級中學
編號 : 138845
來源 : [140.113.140.143]
最後登入時間 :
2024-11-09 01:15:30
a006. 一元二次方程式 | From: [218.164.175.55] | 發表日期 : 2021-05-22 11:26

#include<iostream>

#include <math.h>

using namespace std;

 

int main()

{

int a,b,c,d;

float x1,x2;

cin a,b,c;

d=b*b-4*a*c;

x1=(-b+sqrt(d)/2*a)

x2=(-b-sqrt(d)/2*a)

 

if(sqrt(d)>0)

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

 

else if(sqrt(d)==0)

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

cout<<"No real root"

}

 

首先,第9行

cin a,b,c;

這裡,用cin輸入的用法應該是

cin>>變數1>>變數2......>>變數n;

所以應該改成

cin>>a>>b>>c;

 

再來,這裡

x1=(-b+sqrt(d)/2*a)

x2=(-b-sqrt(d)/2*a)

後面都沒有分號喔

 


還有最後幾行

else if(sqrt(d)==0)

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

cout<<"No real root"

這裡,應該是

else if(sqrt(d)==0) cout<<"Two same roots x="<<x1<<endl;

else cout<<"No real root";

這樣吧?

因為如果按原本這樣寫,不管怎樣都會在最後輸出一個"No real root"

所以應該要加上一個判斷,就是如果(sqrt(d)==0)跟(sqrt(d)==0)都不成立,也就是判別式小於0時才輸出"No real root"

 

大致這樣,希望有解決你的問題!

 

另外記得養成個好習慣,在主函式結束時加上一個

return 0;

來告訴電腦你這隻程式執行完沒有問題ㄛ。

可以參考這篇:www. itread01.com/content/1505890834. html


ㄌㄩㄝˋ打錯,是(sqrt(d)>0)跟(sqrt(d)==0)都不成立

 

另外還有一個問題,在這裡

x1=(-b+sqrt(d)/2*a)

x2=(-b-sqrt(d)/2*a)

原本公式應該是 (-b+判別式) 除以 (2a) 嘛

但是按你這樣寫會變成 (-b) 加上 (判別式除以2a) ,因為c++會按照四則運算的規則

先處理 sqrt(d) / 2*a ,也就是先乘除,在處理 -b + ...... 的部分,因為後加減

所以正確寫法要加上括號,也就是這樣

x1=( (-b + sqrt(d) ) / 2*a )

x2=( (-b - sqrt(d) ) / 2*a )

要記得善用括號喔!

 
#25448: Re:?????


Tamilala (Tamilala不是星導夢女)

學校 : 國立臺南女子高級中學
編號 : 138845
來源 : [140.113.140.143]
最後登入時間 :
2024-11-09 01:15:30
a006. 一元二次方程式 | From: [218.164.175.55] | 發表日期 : 2021-05-22 11:30

#include

#include

using namespace std;

 

int main()

{

int a,b,c,d;

float x1,x2;

cin a,b,c;

d=b*b-4*a*c;

x1=(-b+sqrt(d)/2*a)

x2=(-b-sqrt(d)/2*a)

 

if(sqrt(d)>0)

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

 

else if(sqrt(d)==0)

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

cout<<"No real root"

}

 

首先,第9行

cin a,b,c;

這裡,用cin輸入的用法應該是

cin>>變數1>>變數2......>>變數n;

所以應該改成

cin>>a>>b>>c;

 

再來,這裡

x1=(-b+sqrt(d)/2*a)

x2=(-b-sqrt(d)/2*a)

後面都沒有分號喔

 


還有最後幾行

else if(sqrt(d)==0)

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

cout<<"No real root"

這裡,應該是

else if(sqrt(d)==0) cout<<"Two same roots x="<<x1<<endl;

else cout<<"No real root";

這樣吧?

因為如果按原本這樣寫,不管怎樣都會在最後輸出一個"No real root"

所以應該要加上一個判斷,就是如果(sqrt(d)==0)跟(sqrt(d)==0)都不成立,也就是判別式小於0時才輸出"No real root"

 

大致這樣,希望有解決你的問題!

 

另外記得養成個好習慣,在主函式結束時加上一個

return 0;

來告訴電腦你這隻程式執行完沒有問題ㄛ。

可以參考這篇:www. itread01.com/content/1505890834. html


ㄌㄩㄝˋ打錯,是(sqrt(d)>0)跟(sqrt(d)==0)都不成立

 

另外還有一個問題,在這裡

x1=(-b+sqrt(d)/2*a)

x2=(-b-sqrt(d)/2*a)

原本公式應該是 (-b+判別式) 除以 (2a) 嘛

但是按你這樣寫會變成 (-b) 加上 (判別式除以2a) ,因為c++會按照四則運算的規則

先處理 sqrt(d) / 2*a ,也就是先乘除,在處理 -b + ...... 的部分,因為後加減

所以正確寫法要加上括號,也就是這樣

x1=( (-b + sqrt(d) ) / 2*a )

x2=( (-b - sqrt(d) ) / 2*a )

要記得善用括號喔!


我又打錯了:P

 

所以正確寫法要加上括號,也就是這樣

x1=( (-b + sqrt(d) ) / 2*a )

x2=( (-b - sqrt(d) ) / 2*a )

要記得善用括號喔!」

 

我兩行都忘記加上分號ㄌ

總之應該是

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

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

抱歉連續打錯兩次><

 
ZeroJudge Forum