C++多項式課程設計多項式的運算_第1頁
C++多項式課程設計多項式的運算_第2頁
C++多項式課程設計多項式的運算_第3頁
C++多項式課程設計多項式的運算_第4頁
C++多項式課程設計多項式的運算_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、計算機科學與應用系程序類課程設計設計報告書題 目: 多項式的運算 指導教師: 宋濤 姓 名: 潘彬彬 學 號: 111006420 日 期: 2012/5/16 計算機科學與應用系 2011-2012學年第二學期一、 需求分析輸入部分,要求用戶能從屏幕上輸入兩個一元多項式。如多項式a為:x3+2x2+4;多項式b為:-x3+4x2+2。程序通過語句得到這兩個字符串,進行解析,分解出系數(shù)和指數(shù),存儲在不同的線性表la,lb中。然后,程序基于線性表la、lb來實現(xiàn)多項式的加、減、乘、運算。最終,輸出部分將得到的運算結果輸出,如上述多項式a和b的和為:6x2+6。二、 系統(tǒng)主要功能用于一元多項式的加

2、減乘運算。三、 流程圖從屏幕輸入多項式a和b分析a、b,并將指數(shù)、系數(shù)對存儲到線性表la、lb中多項式加法多項式減法多項式乘法將結果顯示出來圖1.多項式運算的流程圖四、 數(shù)據(jù)結構設計1. 定義多項式類class polynomial;2. 把多項式的指數(shù)和系數(shù)結合定義為一個類class polynode;3. 用鏈表保存多項式list l;五、 類設計1.多項式的項類指數(shù)、系數(shù)可以描述多項式的一項,作為一個整體來存儲;class polynodepublic:double xishu;/系數(shù)int zhishu;/指數(shù)public:polynode(void);polynode(void);p

3、olynode(double xishu, int zhishu)/構造函數(shù),為xishu、zhishu賦值bool operator (polynode b)const /判斷兩項是否滿足大的關系,指數(shù)大者大bool operator= (polynode b)const/判斷兩項是否滿足等的關系;2.多項式類在多項式類中,必須有存儲多項式各項的線性表,還必須有實現(xiàn)多項式運算的成員函數(shù)。類的定義如下:class polynomial/多項式類,其中實現(xiàn)了多項式的加減乘除。private:list l;/用于存放多項式的鏈表public:polynomial()/構造函數(shù);polynomial

4、()/析構函數(shù)l.clear();/清空鏈表;void print()/輸出多項式void insert(polynode e) /插入一個結點,使得插入后表中結點仍然按指數(shù)有序還要有合并同類項的功能 void insert(double xishu,int zhishu) polynomial operator+(polynomial b) /重載多項式的加法運算符 polynomial operator-(polynomial b) /重載多項式的減法運算符polynomial operator*(polynomial b) /重載多項式的乘法運算符void input(polynomia

5、l &p) /輸入多項式;六、 主要算法設計1.用鏈表保存兩個多項式(list l;);2.將多項式的項封裝為一個類(class polynode);3.用運算符重載的方式實現(xiàn)多項式的加減乘運算,創(chuàng)建一個用于遍歷的指針對鏈表進行遍歷(list:iterator i;),先將指數(shù)相同的項的系數(shù)相加 if(i-zhishu =e.zhishu )/合并同類項i-xishu+=e.xishu;if(i-xishu=0)l.erase(i);(即運算之前合并同類項),指數(shù)不同按大小順序插入; else if(i-zhishu e.zhishu )l.insert(i,e);4.減法時將另一個多項式每一

6、項系數(shù)乘個-1再相加; polynode temp=*i;temp.xishu*=-1;t.insert(temp);5.乘法用第一個多項式的每一項與第二個多項式的每一項相乘即系數(shù)相乘、指數(shù)相加。 for(i=b.l.begin();i!=b.l.end();i+)for(j=l.begin();j!=l.end();j+) polynode temp;temp.xishu=i-xishu*j-xishu;temp.zhishu=i-zhishu+j-zhishu;if(temp.xishu)t.insert(temp);七、 主要代碼1.多項式的輸出 void print()list:ite

7、rator i;if(l.size()=0)cout0endl;return;i=l.begin();coutxishuxzhishu;/打印多項式的第一項i+;for(;i!=l.end();i+)/打印多項式的其他項if(i-xishu0)cout+xishuxzhishu;elsecoutxishuxzhishu;coutendl;2.插入與合并 void insert(polynode e)/插入一個結點,使得插入后表中結點仍然按指數(shù)有序/還要有合并同類項的功能list:iterator i;for(i=l.begin();i!=l.end();i+)if(i-zhishu =e.zh

8、ishu )/合并同類項i-xishu+=e.xishu;if(i-xishu=0)l.erase(i);break;else if(i-zhishu e.zhishu )/找到插入位置,插入l.insert(i,e);break;if(i=l.end()l.push_back(e);/print();void insert(double xishu,int zhishu)polynode e(xishu,zhishu);insert(e);3.加法 polynomial operator+(polynomial b)polynomial t;t.l=l;list:iterator i;for

9、(i=b.l.begin();i!=b.l.end();i+)t.insert(*i);return t;4.減法 polynomial operator-(polynomial b)polynomial t;t.l=l;list:iterator i;for(i=b.l.begin();i!=b.l.end();i+)polynode temp=*i;temp.xishu*=-1;t.insert(temp);return t;5.乘法polynomial operator*(polynomial b)polynomial t;list:iterator i,j;for(i=b.l.begi

10、n();i!=b.l.end();i+)for(j=l.begin();j!=l.end();j+) polynode temp;temp.xishu=i-xishu*j-xishu;temp.zhishu=i-zhishu+j-zhishu;if(temp.xishu)t.insert(temp);return t;6.多項式的輸入void input(polynomial &p)cout請輸入多項式的系數(shù)和指數(shù),以空格隔開,0 0表示結束:xishuzhishu;if(xishu=0 & zhishu=0)break;p.insert(xishu,zhishu);7.主函數(shù)int main

11、()polynomial p,q,r;while(1)cout1:輸入多項式endl;cout2:加法endl;cout3:減法endl;cout4:乘法endl;cout5:退出endl;coutt;if(t=1)cout請輸入第一個多項式的信息endl;input(p);cout請輸入第二個多項式的信息endl;input(q);else if(t=2)r=p+q;coutp=;p.print();coutq=;q.print();coutp+q=;r.print();else if(t=3)coutp=;p.print();coutq=;q.print();coutp-q=;r=p-q;r.print();else if(t=4)r=p*q;coutp=;p.print();coutq=;q.print();coutp*q=;r.print();else if(t=5)break;return 0;八、 系統(tǒng)運行結果樣例九、 結束語 通過這次課程設計,我感覺到要真正做出一個程序并不很容易,但只要用心去做

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論