Re: [問題] 小新手程式寫不出來,麻煩高手幫忙。

看板Programming作者 (cxzdsa5566)時間15年前 (2010/10/06 22:13), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串2/4 (看更多)
※ 引述《cxzdsa5566 (cxzdsa5566)》之銘言: : http://www.mediafire.com/?8v9hk6lq19hlwsf : 檔案 : 這是我寫到一半的 : 不管我怎麼寫, : C++都會跳到math.h (C++自己新開的分頁) : 我自己也找不出啥錯誤, : C++跟我講的錯誤我又看不出來哪邊錯了, : 可以麻煩高手嗎? #include <iostream> #include <cmath> using namespace std; int main() { double a,b,c,z1,z2,z3,z2i,z3i,sita; cout<<" This program finds the roots of x^3+a x^2 + b x + c =0 "<<endl; cout<<" Enter the coefficient a: "; cin>>a; cout<<" Enter the coefficient b: "; cin>>b; cout<<" Enter the constant c: "; cin>>c; double Q=(3*b*b-a*a)/9; double R=(9*a*b-27*c-2*a*a*a)/54; double D=Q*Q*Q+R*R*R; if(D=0) { z1 = -a/3+2*pow(R,1.0/3.0); z2 = z3=-a/3+2*sqrt(-Q); z2i=z3i=0; } if (D>0) { z1 = -a/3+pow((R+sqrt(D)),1.0/3.0)+pow((R-sqrt(D)),1.0/3.0); z2 = -a/3-(pow(R+sqrt(D),1.0/3.0)+pow(R-sqrt(D),1.0/3.0))/2; z2i =(pow(R+sqrt(D),1.0/3)-pow(R-sqrt(D),1.0/3.0))*(sqrt(3)*0.5); z3 = -a/3-(pow(R+sqrt(D),1.0/3.0)+pow(R-sqrt(D),1.0/3.0))/2; z3i = -(pow(R+sqrt(D),1.0/3.0)-pow(R-sqrt(D),1.0/3.0))*(sqrt(3)*0.5); } if (D<0) { double sita=acos(R/sqrt(-Q*Q*Q)); z1=-a/3+2*sqrt(-Q)*cos(sita/3); z2=-a/3+2*sqrt(-Q)*cos(sita/3+2*M_PI/3); z3=-a/3+2*sqrt(-Q)*cos(sita/3+4*M_PI/3); z2i=z3i=0; } cout<<endl; cout<<" "<<"x^3"<<a<<" x^2+ "<<b<<" x+ "<<c<<" = 0"<<endl; cout<<" Root 1: "<<z1<<endl; cout<<" Root 2: "<<z2<<" + "<<z2i<<"i"<<endl; cout<<" Root 3: "<<z3<<" + "<<z3i<<"i"<<endl; system("pause"); return 0; } 一些很明顯的錯誤我都改了 不過現在問題是, 我可以run,可是算出來的東西明顯不是正確答案, 請問有高手可以幫忙嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.218.123

10/06 22:15, , 1F
輸入一組簡單可驗算的輸入值
10/06 22:15, 1F

10/06 22:16, , 2F
在每次得到新的運算值時,印出運算結果
10/06 22:16, 2F

10/06 22:17, , 3F
檢查紙筆算的跟電腦算的哪邊不一致
10/06 22:17, 3F

10/06 22:36, , 4F
D=0 <---- 這行不是比較,而是指定
10/06 22:36, 4F
文章代碼(AID): #1Ch8FvBJ (Programming)
文章代碼(AID): #1Ch8FvBJ (Programming)