#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"
}
#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
#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 )
要記得善用括號喔!
#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 ) ;
抱歉連續打錯兩次><