版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 《計算機科學(xué)與應(yīng)用系程序類課程設(shè)計》</p><p><b> 設(shè)計報告書</b></p><p> 題 目: 多項式的運算 </p><p> 指導(dǎo)教師: </p><p> 姓 名:
2、 </p><p> 學(xué) 號: </p><p> 日 期: 2012/5/16 </p><p> 計算機科學(xué)與應(yīng)用系 2011-2012學(xué)年第二學(xué)期</p><p><b> 需求分
3、析</b></p><p> 輸入部分,要求用戶能從屏幕上輸入兩個一元多項式。如多項式A為:x^3+2x^2+4;多項式B為:-x^3+4x^2+2。</p><p> 程序通過語句得到這兩個字符串,進(jìn)行解析,分解出系數(shù)和指數(shù),存儲在不同的線性表LA,LB中。</p><p> 然后,程序基于線性表LA、LB來實現(xiàn)多項式的加、減、乘、運算。<
4、/p><p> 最終,輸出部分將得到的運算結(jié)果輸出,如上述多項式A和B的和為:6x^2+6。</p><p><b> 系統(tǒng)主要功能</b></p><p> 用于一元多項式的加減乘運算。</p><p><b> 流程圖</b></p><p><b> 四
5、、 數(shù)據(jù)結(jié)構(gòu)設(shè)計</b></p><p> 1. 定義多項式類class Polynomial;</p><p> 2. 把多項式的指數(shù)和系數(shù)結(jié)合定義為一個類class PolyNode;</p><p> 3. 用鏈表保存多項式list<PolyNode> L;</p><p><b> 五、 類設(shè)
6、計</b></p><p><b> 1.多項式的項類</b></p><p> 指數(shù)、系數(shù)可以描述多項式的一項,作為一個整體來存儲;</p><p> class PolyNode</p><p><b> {</b></p><p><b>
7、 public:</b></p><p> double xishu;//系數(shù)</p><p> int zhishu;//指數(shù)</p><p><b> public:</b></p><p> PolyNode(void){};</p><p> ~PolyNode(v
8、oid){};</p><p> PolyNode(double xishu, int zhishu)//構(gòu)造函數(shù),為xishu、zhishu賦值</p><p> bool operator< (PolyNode b)const//判斷兩項是否滿足小的關(guān)系,指數(shù)小者小</p><p> bool operator> (PolyNode b)con
9、st //判斷兩項是否滿足大的關(guān)系,指數(shù)大者大</p><p> bool operator== (PolyNode b)const//判斷兩項是否滿足等的關(guān)系</p><p><b> };</b></p><p><b> 2.多項式類</b></p><p> 在多項式類中,必須有存儲
10、多項式各項的線性表,還必須有實現(xiàn)多項式運算的成員函數(shù)。</p><p><b> 類的定義如下:</b></p><p> class Polynomial//多項式類,其中實現(xiàn)了多項式的加減乘除。</p><p><b> {</b></p><p><b> private:&
11、lt;/b></p><p> list<PolyNode> L;//用于存放多項式的鏈表</p><p><b> public:</b></p><p> Polynomial()//構(gòu)造函數(shù)</p><p><b> {};</b></p><p&
12、gt; ~Polynomial()//析構(gòu)函數(shù)</p><p><b> {</b></p><p> L.clear();//清空鏈表</p><p><b> };</b></p><p> void print()//輸出多項式</p><p> void
13、Insert(PolyNode e) //插入一個結(jié)點,使得插入后表中結(jié)點仍然按指數(shù)有序還要有合并同類項的功能</p><p> void Insert(double xishu,int zhishu)</p><p> Polynomial operator+(Polynomial b) //重載多項式的加法運算符</p><p> Polynomial o
14、perator-(Polynomial b) //重載多項式的減法運算符</p><p> Polynomial operator*(Polynomial b) //重載多項式的乘法運算符</p><p> void Input(Polynomial &p) //輸入多項式</p><p><b> };</b></p>
15、;<p><b> 六、 主要算法設(shè)計</b></p><p> 1.用鏈表保存兩個多項式(list<PolyNode> L;);</p><p> 2.將多項式的項封裝為一個類(class PolyNode);</p><p> 3.用運算符重載的方式實現(xiàn)多項式的加減乘運算,創(chuàng)建一個用于遍歷的指針對鏈表進(jìn)行遍
16、歷(list<PolyNode>::iterator i;),先將指數(shù)相同的項的系數(shù)相加</p><p> if(i->zhishu ==e.zhishu )</p><p><b> {//合并同類項</b></p><p> i->xishu+=e.xishu;</p><p> if
17、(i->xishu==0)</p><p> L.erase(i);</p><p> ?。催\算之前合并同類項),指數(shù)不同按大小順序插入;</p><p> else if(i->zhishu >e.zhishu )</p><p> L.insert(i,e);</p><p> 4.減法
18、時將另一個多項式每一項系數(shù)乘個-1再相加;</p><p> PolyNode temp=*i;</p><p> temp.xishu*=-1;</p><p> t.Insert(temp);</p><p> 5.乘法用第一個多項式的每一項與第二個多項式的每一項相乘即系數(shù)相乘、指數(shù)相加。</p><p>
19、 for(i=b.L.begin();i!=b.L.end();i++)</p><p> for(j=L.begin();j!=L.end();j++)</p><p><b> {</b></p><p> PolyNode temp;</p><p> temp.xishu=i->xishu*j-&
20、gt;xishu;</p><p> temp.zhishu=i->zhishu+j->zhishu;</p><p> if(temp.xishu)</p><p> t.Insert(temp);</p><p><b> }</b></p><p><b>
21、七、 主要代碼</b></p><p><b> 1.多項式的輸出</b></p><p> void print()</p><p><b> {</b></p><p> list<PolyNode>::iterator i;</p><p&g
22、t; if(L.size()==0)</p><p><b> {</b></p><p> cout<<"0"<<endl;</p><p><b> return;</b></p><p><b> }</b></
23、p><p> i=L.begin();</p><p> cout<<i->xishu<<"X^"<<i->zhishu;//打印多項式的第一項</p><p><b> i++;</b></p><p> for(;i!=L.end();i++
24、)//打印多項式的其他項</p><p><b> {</b></p><p> if(i->xishu>0)</p><p> cout<<"+"<<i->xishu<<"X^"<<i->zhishu;</p>
25、<p><b> else</b></p><p> cout<<i->xishu<<"X^"<<i->zhishu;</p><p><b> }</b></p><p> cout<<endl;</p>&l
26、t;p><b> }</b></p><p><b> 2.插入與合并</b></p><p> void Insert(PolyNode e)</p><p> {//插入一個結(jié)點,使得插入后表中結(jié)點仍然按指數(shù)有序</p><p> //還要有合并同類項的功能</p>
27、<p> list<PolyNode>::iterator i;</p><p> for(i=L.begin();i!=L.end();i++)</p><p><b> {</b></p><p> if(i->zhishu ==e.zhishu )</p><p><b&
28、gt; {//合并同類項</b></p><p> i->xishu+=e.xishu;</p><p> if(i->xishu==0)</p><p> L.erase(i);</p><p><b> break;</b></p><p><b>
29、 }</b></p><p> else if(i->zhishu >e.zhishu )</p><p> {//找到插入位置,插入</p><p> L.insert(i,e);</p><p><b> break;</b></p><p><b>
30、; }</b></p><p><b> }</b></p><p> if(i==L.end())</p><p> L.push_back(e);</p><p> //print();</p><p><b> }</b></p>
31、<p> void Insert(double xishu,int zhishu)</p><p><b> {</b></p><p> PolyNode e(xishu,zhishu);</p><p> Insert(e);</p><p><b> }</b></p
32、><p><b> 3.加法</b></p><p> Polynomial operator+(Polynomial b)</p><p><b> {</b></p><p> Polynomial t;</p><p><b> t.L=L;</b
33、></p><p> list<PolyNode>::iterator i;</p><p> for(i=b.L.begin();i!=b.L.end();i++)</p><p> t.Insert(*i);</p><p><b> return t;</b></p><
34、;p><b> }</b></p><p><b> 4.減法</b></p><p> Polynomial operator-(Polynomial b)</p><p><b> {</b></p><p> Polynomial t;</p>
35、<p><b> t.L=L;</b></p><p> list<PolyNode>::iterator i;</p><p> for(i=b.L.begin();i!=b.L.end();i++)</p><p><b> {</b></p><p> Po
36、lyNode temp=*i;</p><p> temp.xishu*=-1;</p><p> t.Insert(temp);</p><p><b> }</b></p><p><b> return t;</b></p><p><b> }&l
37、t;/b></p><p><b> 5.乘法</b></p><p> Polynomial operator*(Polynomial b)</p><p><b> {</b></p><p> Polynomial t;</p><p> list<
38、;PolyNode>::iterator i,j;</p><p> for(i=b.L.begin();i!=b.L.end();i++)</p><p> for(j=L.begin();j!=L.end();j++)</p><p><b> {</b></p><p> PolyNode temp;
39、</p><p> temp.xishu=i->xishu*j->xishu;</p><p> temp.zhishu=i->zhishu+j->zhishu;</p><p> if(temp.xishu)</p><p> t.Insert(temp);</p><p><b
40、> }</b></p><p><b> return t;</b></p><p><b> }</b></p><p><b> };</b></p><p><b> 6.多項式的輸入</b></p><
41、;p> void Input(Polynomial &p)</p><p><b> {</b></p><p> cout<<"請輸入多項式的系數(shù)和指數(shù),以空格隔開,0 0表示結(jié)束:"<<endl;</p><p><b> while(1)</b><
42、;/p><p><b> {</b></p><p> double xishu;</p><p> int zhishu;</p><p> cin>>xishu>>zhishu;</p><p> if(xishu==0 && zhishu==0)
43、break;</p><p> p.Insert(xishu,zhishu);</p><p><b> }</b></p><p><b> }</b></p><p><b> 7.主函數(shù)</b></p><p> int main()&l
44、t;/p><p><b> {</b></p><p> Polynomial p,q,r;</p><p><b> while(1)</b></p><p><b> {</b></p><p> cout<<"1:輸入多
45、項式"<<endl;</p><p> cout<<"2:加法"<<endl;</p><p> cout<<"3:減法"<<endl;</p><p> cout<<"4:乘法"<<endl;</p&
46、gt;<p> cout<<"5:退出"<<endl;</p><p> cout<<"請輸入你的選擇:";</p><p><b> int t;</b></p><p><b> cin>>t;</b><
47、/p><p><b> if(t==1)</b></p><p><b> {</b></p><p> cout<<"請輸入第一個多項式的信息"<<endl;</p><p><b> Input(p);</b></p&g
48、t;<p> cout<<"請輸入第二個多項式的信息"<<endl;</p><p><b> Input(q);</b></p><p><b> }</b></p><p> else if(t==2)</p><p><b
49、> {</b></p><p><b> r=p+q;</b></p><p> cout<<"p=";</p><p> p.print();</p><p> cout<<"q=";</p><p>
50、 q.print();</p><p> cout<<"p+q=";</p><p> r.print();</p><p><b> }</b></p><p> else if(t==3)</p><p><b> {</b>&l
51、t;/p><p> cout<<"p=";</p><p> p.print();</p><p> cout<<"q=";</p><p> q.print();</p><p> cout<<"p-q=";<
52、/p><p><b> r=p-q;</b></p><p> r.print();</p><p><b> }</b></p><p> else if(t==4)</p><p><b> {</b></p><p>
53、<b> r=p*q;</b></p><p> cout<<"p=";</p><p> p.print();</p><p> cout<<"q=";</p><p> q.print();</p><p> cout
54、<<"p*q=";</p><p> r.print();</p><p><b> }</b></p><p> else if(t==5)</p><p><b> break;</b></p><p><b> }&l
55、t;/b></p><p><b> return 0;</b></p><p><b> }</b></p><p> 八、 系統(tǒng)運行結(jié)果樣例</p><p><b> 九、 結(jié)束語</b></p><p> 通過這次課程設(shè)計,我感覺到
56、要真正做出一個程序并不很容易,但只要用心去做,總會有收獲,特別是當(dāng)我遇到問題,問老師,問同學(xué),想盡辦法去解決,最后終于找到方法時,心里的那份喜悅之情真是難以形容.編寫程序中遇到問題再所難免,應(yīng)耐心探究其中的原因,從出現(xiàn)問題的地方起,并聯(lián)系前后程序,仔細(xì)推敲,逐個排查.直到最終搞清為止。無論如何,能比較圓滿的完成這個課程設(shè)計對我來說是個極大的鼓舞,成為我漫漫編程路上的一個里程碑。</p><p><b>
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c++多項式課程設(shè)計---多項式的運算
- 一元多項式運算課程設(shè)計
- 多項式除以多項式
- 多項式乘以多項式
- 多項式乘多項式教學(xué)設(shè)計課件
- 多項式乘多項式教案設(shè)計
- 一元多項式運算課程設(shè)計報告
- 課程設(shè)計---一元多項式的代數(shù)運算
- c++課程設(shè)計---一元多項式簡單計算器
- c++課程設(shè)計--一元多項式簡單計算器
- 多項式乘以多項式練習(xí)題
- 多項式乘多項式(優(yōu)質(zhì)課)
- 多項式乘多項式試題精選附答案
- Bernoulli多項式與冪和多項式.pdf
- 矩陣多項式的極小多項式算法.pdf
- 多項式乘多項式試題精選二附解答
- 多項式乘多項式試題精選附答案55990
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---多項式問題
- 人教版多項式
- 關(guān)于多項式函數(shù)與置換多項式的研究.pdf
評論
0/150
提交評論