版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> C++課程設(shè)計實驗報告</p><p> 姓名 李然 學(xué)號0511590128 班級05115901 任課教師 肖亮 時間 9.24 </p><p> 教師指定題 3-5 求解方程 評定難易級別 A </p><p> 實驗報告成績 </p>&
2、lt;p><b> .實驗內(nèi)容:</b></p><p> 1.1 程序功能介紹</p><p> 用因式分解的方法求解方程ax^n+bx^(n-1)+ ……+cx+k的根。方法是根據(jù)方程的第一項與最后一項(常數(shù)項),求解方程的一個根。具體做法是:a是一個能整除第一項系數(shù)的整數(shù),k是一個能整除常數(shù)項的數(shù),將所有的(k/a)代入方程,檢驗是否為方程的根,如果
3、是,則把方程除以(x-k/a)得到新方程,即降階。對新方程重復(fù)以上步驟,直到首項為x^2,再利用二次方程的算法求解出方程的實根或虛根。</p><p> 1.2 程序設(shè)計要求</p><p> (1)定義一個方程類,將與方程有關(guān)的數(shù)據(jù)和操作封裝到類中,并改寫主程序結(jié)構(gòu),使程序可以反復(fù)運行。</p><p> ?。?)擴充其功能,使該程序能求解冪n=6或更高次冪,
4、也可求解線性方程。</p><p> ?。?)增加功能,使程序既可以從鍵盤中讀入方程,也可以由文件中讀入方程。</p><p> 2.源程序結(jié)構(gòu)流程框圖與說明(含新增子函數(shù)的結(jié)構(gòu)框圖)</p><p><b> 3.基本數(shù)據(jù)結(jié)構(gòu)</b></p><p> class Equ{ //方程的類</p>
5、<p> char terms[100][40]; //每一項數(shù)的指針 </p><p> char equ[5000]; //方程</p><p> int n,numbers; //n為方程的階數(shù),numbers為方程的項數(shù)</p><p><b> public:</b></p><
6、;p> Equ(char*); //構(gòu)造函數(shù)</p><p> void InputFromFile(); //從文件輸入方程</p><p> void getfactorsof(int *factor_list,int &num,int val);//將val項的整數(shù)因子放入數(shù)組factor_list中</p><p> vo
7、id getterm(char *src,char *dest,int &loc);//從字符串scr的第loc個字符起復(fù)制一個完整的項到字符串</p><p> void reduceequbyfactor(char *base,char *newequ,float factor);//降階</p><p> void gettermforpower(char *equ,ch
8、ar *dest,int power);//將階數(shù)為power的項數(shù)復(fù)制到dest</p><p> int getcoeff(char *term); //返回一項的系數(shù)</p><p> float getcoeff_f(char *term); //取得一項的系數(shù)</p><p> int getdegreeofterm(char *ter
9、m); //返回term這項的x的階數(shù) </p><p> int remaindertheorem(char *equ,float root); //判斷root是否為方程的解 ,不是返回1</p><p> int exp(int,int); //求解val的e次冪</p><p> float exp(float val,int e);
10、 //求解val的e次冪</p><p> float forallfactors(int *a,int *k,int n_a,int n_k,char *equ); //驗根 </p><p> float calcequval(char*,float); //得出val代入x后該項的數(shù)值 </p><p> void qiujie()
11、; //主要操作過程</p><p> void quadraticequation(int a,int b,int c);//求解一元二次方程</p><p> void qiuyicifangcheng(int b,int c); //求解線性方程</p><p> void qiulingcifangcheng(char *t) //
12、求解0次方程</p><p><b> {</b></p><p> if(t[0]=='0'&&t[1]=='\0') //若方程為0=0,解為全體實數(shù)</p><p> cout<<"全體實數(shù)!"<<endl;</p>&
13、lt;p> else cout<<"無解!"<<endl; //若方程為一個非零常數(shù)等于零,無解</p><p><b> }</b></p><p><b> };</b></p><p> 4.程序運行結(jié)果界面 </p><p>&
14、lt;b> 圖1. 初始界面</b></p><p><b> 圖2. 運行界面</b></p><p> 5. 課程設(shè)計遇到的技術(shù)問題與解決思路</p><p> 問題1: 該程序設(shè)計的關(guān)鍵是將算法推廣,原程序只適用于求x?5階數(shù)的方程,現(xiàn)在要求能求解冪n=6或更高次冪。</p><p>
15、 解決辦法: 將原程序中用于放置x的項數(shù)的數(shù)組terms和方程解的固定數(shù)組roots該成動態(tài)數(shù)組,即根據(jù)輸入方程項數(shù)的最高階來決定具體的數(shù)組維數(shù),需要在輸入方程后進行判斷。這一部分的代碼如下:</p><p> if(strchr(ex,'x')!=NULL){ </p><p> if(strchr(ex,'^')!=NULL){ </p>
16、<p> for(int i=0;ex[i]!='^';i++); //跳過第一項的系數(shù)、x和`^`,找到`^` 后的字符,即為階數(shù)最高項的階數(shù) </p><p><b> i++;</b></p><p> n=(int
17、(ex[i]-'0')) //將字符轉(zhuǎn)化為數(shù)值,即最高階項階數(shù),將值賦給n</p><p><b> }</b></p><p><b> else</b></p><p> n=1; //方程里沒有字符`^`,方程為一次,即n=1</p><p><b>
18、 }</b></p><p><b> else</b></p><p> n=0; //方程里沒有x,方程為0次,即n=0</p><p> 要求還要求解線性方程,這部分主要是在求解一元二次方程時實現(xiàn)的,代碼如下:</p><p> void Equ::qiuyicifangcheng(in
19、t b,int c)</p><p><b> {</b></p><p> cout<<-(float)c/(float)b<<endl;</p><p><b> } </b></p><p> 函數(shù)調(diào)用時b和c的值通過求系數(shù)的函數(shù)確定</p>&
20、lt;p> 問題2:文件中讀取方程</p><p> 解決辦法:從眾多C++書中讀取相關(guān)資料并找到如下程序:</p><p> 從文件輸入:void:InputFromFile()</p><p><b> {</b></p><p> ifstream ins;char equation[256];co
21、ut<<"請輸入文件名: "<<endl;cin>>equation;</p><p> ins.open(equation,ios::in|ios::nocreate);</p><p> if(ins.fail())</p><p><b> {</b></p>&
22、lt;p> cerr<<"該文件不存在!"<<endl;</p><p> system("pause");exit(1);</p><p><b> }</b></p><p> for(int i=0; i<(n+1)&&equ[loc]!=
23、'='&&equ[loc]!='\0'&&equ[loc]!='\n';i++)</p><p> getterm (equ,terms[i],loc);numbers=i; </p><p> ins.close();}</p><p><b> }</b>
24、</p><p> 經(jīng)過幾天的研究,程序終于像一座冰山一樣開始慢慢融化,終于明白了程序的大體意思,但是有幾個函數(shù)是從來沒用過的,所以設(shè)計思路卻是一團亂麻,不知道應(yīng)該從何處下手,經(jīng)過幾天的苦思冥想,進展還是不大,只能向老師和同學(xué)請教,有時間就到圖書館去,那里有許多c++的參考書,我邊看書邊做。好不容易程序做出來一點頭緒,不過這個程序還真是困難重重。通過這次課程設(shè)計,我學(xué)到了許多課本上學(xué)不到的知識。更加鍛煉了我的毅
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設(shè)計實驗報告--求解方程
- C++課程設(shè)計實驗報告--求解方程.doc
- c++課程設(shè)計——學(xué)籍管理系統(tǒng)實驗報告
- c++課程設(shè)計實驗報告---字符串操作
- c++課程設(shè)計實驗報告---職工信息管理系統(tǒng)課程設(shè)計
- C++課程設(shè)計實驗報告---字符串操作.doc
- c++程序設(shè)計課程設(shè)計 ----學(xué)生成績管理系統(tǒng)實驗報告
- c++上機實驗報告
- c++課程設(shè)計報告
- c語言課程設(shè)計實驗報告資料
- c++掃雷課程設(shè)計報告
- c語言圖形時鐘課程設(shè)計實驗報告
- 課程設(shè)計實驗報告
- 電子科大c++實驗報告
- c++面向?qū)ο笳n程設(shè)計報告
- c++課程設(shè)計報告--幸運52
- c++課程設(shè)計報告--幻方
- c++課程設(shè)計報告--坦克游戲
- c++推箱子課程設(shè)計報告
評論
0/150
提交評論