[問題] 超新手 二次方程式解

看板C_and_CPP作者 (COELACANTH)時間15年前 (2011/01/07 16:55), 編輯推噓2(208)
留言10則, 7人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, Gcc, Linux, ...) C++ 額外使用到的庫(Library Used) (Ex: OpenGL, ...) 問題(Question): 單純設計一個能解 real roots 的程式 ax^2+bx+c=0 Determinant X=b^2-4ac if (X>0) cout << The roots are...; else if (X==0) << There's only one root x=...; 但我的程式好像抓不到 x==0 請賜教 餵入的資料(Input): a=1 b=-6 c=9 預期的正確結果(Expected Output): There's only one root x=3. 錯誤結果(Wrong Output): The roots are x=3 and x=3. 程式碼(Code): (請善用置底文標色功能) http://nopaste.info/5c2878e478.html 補充說明(Supplement): 初學者請別鞭的太兇 多謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.170.198.8

01/07 17:01, , 1F
你x忘了去接root()的回傳值
01/07 17:01, 1F

01/07 17:20, , 2F
你的else if (x==0) cout << "There's..." 是不是該用\'了
01/07 17:20, 2F

01/07 19:38, , 3F
因為浮點數有誤差問題, 沒辦法直接去判斷是否相等
01/07 19:38, 3F

01/07 19:44, , 4F
樓上正解...
01/07 19:44, 4F

01/07 21:30, , 5F
x去接root()回傳值就可以了
01/07 21:30, 5F

01/07 23:10, , 6F
浮點數誤差可能要注意,但也要加上x = root();
01/07 23:10, 6F

01/08 02:36, , 7F
你該先會C 不要一下子就習慣C++
01/08 02:36, 7F

01/08 02:36, , 8F
root整個寫錯 該寫成 (B*B)-sqrt(4*A*C);
01/08 02:36, 8F

01/08 07:56, , 9F
樓上...x={-b±√(b^2-4ac)}/2a 你只根號4ac是那招?
01/08 07:56, 9F

01/08 11:10, , 10F
抱歉打錯,該是 sqrt(B*B - 4*A*C)...
01/08 11:10, 10F
文章代碼(AID): #1D9jKGS9 (C_and_CPP)
文章代碼(AID): #1D9jKGS9 (C_and_CPP)