請各位大大幫個忙~
以下是我的程式碼
#include<iostream>
#include<cmath>
using namespace std;
double abc(double a,double b,double d){
double x,y,temp;
x=(-b+(int)sqrt(d))/(2*a);
y=(-b-(int)sqrt(d))/(2*a);
if(x==-0)
x=0;
if(y==-0)
y=0;
if(x==y)
cout<<"Two same roots x="<<x<<endl;
else{
if(x<y){
temp=y;
y=x;
x=temp;
cout<<"Two different roots x1="<<x<<" , x2="<<y<<endl;
}
}
}
main(){
double a,b,c,d=0;
while(cin>>a>>b>>c){
d=b*b-4*a*c;
if(d>=0)
abc(a,b,d);
else
cout<<"No real root"<<endl;
}
}
為何第一個測試點一直無法通過??
*** 第 1 點 (20%):WA (line:1)
您的程式未完成所有的輸出!!(line:1)
您只輸出了 0 行!
可能的原因為
* 未用 while 迴圈讀取全部的測試資料,以致輸出短少,請參考 a001 範例程式。
* 程式未充分考慮所有邊界值而導致程式提前中止
if(x==y)
cout<<"Two same roots x="<<x<<endl;
else{
if(x<y){
cout<<"Two different roots x1="<<x<<" , x2="<<y<<endl;
}
應該移到這裡 (當x>y你的程式不會輸出)
}
你應該是不小心把那條放到裡面 ..
if(x==y)
cout<<"Two same roots x="<<
else{
if(x
cout<<"Two different roots x1="<<<" , x2="<<
}
應該移到這裡 (當x>y你的程式不會輸出)
}
你應該是不小心把那條放到裡面 ..
恩恩解決了~
謝謝~!