元稀疏多項(xiàng)式計(jì)算器試驗(yàn)報(bào)告c編寫附源代碼_第1頁
元稀疏多項(xiàng)式計(jì)算器試驗(yàn)報(bào)告c編寫附源代碼_第2頁
元稀疏多項(xiàng)式計(jì)算器試驗(yàn)報(bào)告c編寫附源代碼_第3頁
元稀疏多項(xiàng)式計(jì)算器試驗(yàn)報(bào)告c編寫附源代碼_第4頁
元稀疏多項(xiàng)式計(jì)算器試驗(yàn)報(bào)告c編寫附源代碼_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余10頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、一元稀疏多項(xiàng)式計(jì)算器實(shí)驗(yàn)報(bào)告一級(jí) 班 年月日姓名 學(xué)號(hào)1 .實(shí)驗(yàn)題目設(shè)計(jì)一個(gè)一元稀疏多項(xiàng)式簡(jiǎn)單計(jì)算器.2 .需求分析本程序用VC編寫,實(shí)現(xiàn)一元浮點(diǎn)系數(shù),整數(shù)指數(shù)稀疏多項(xiàng)式的創(chuàng)立、兩個(gè)一元多項(xiàng)式相 加、兩個(gè)一元多項(xiàng)式相減、輸出一元多項(xiàng)式.輸入的形式和輸入值的范圍:A.輸入指定的數(shù)字,以此選擇兩個(gè)多項(xiàng)式的運(yùn)算方式,運(yùn)算方式有兩個(gè)一元多項(xiàng)式相加、 兩個(gè)一元多項(xiàng)式相減.B.創(chuàng)立多項(xiàng)式時(shí),需要輸入此多項(xiàng)式,每一項(xiàng)的系數(shù)和指數(shù).輸出的形式:每次輸入一個(gè)完整的多項(xiàng)式后、每次得出多項(xiàng)式運(yùn)算結(jié)果時(shí),會(huì)以指定 的方式輸出多項(xiàng)式.程序所能到達(dá)的功能:實(shí)現(xiàn)一元稀疏多項(xiàng)式的創(chuàng)立、兩個(gè)一元多項(xiàng)式相加、兩個(gè) 一兀多項(xiàng)式相減

2、、輸出一兀多項(xiàng)式.測(cè)試數(shù)據(jù):輸入數(shù)據(jù):A.出現(xiàn)選擇兩個(gè)多項(xiàng)式的運(yùn)算方式菜單時(shí),輸入1 即使兩個(gè)多項(xiàng)式相加;B.首先輸入多項(xiàng)式p的每一項(xiàng)系數(shù)和指數(shù),當(dāng)輸入的指數(shù)為-5000時(shí),表示該 多項(xiàng)式 輸入完畢,輸入的數(shù)據(jù)依次為:3, 3, 0,-5000;C.其次輸入多項(xiàng)式q的每一項(xiàng)系數(shù)和指數(shù),輸入數(shù)據(jù)依次為:2, 2, 0, -5000. 輸出結(jié)果: 多項(xiàng)式q+p的結(jié)果為: 多項(xiàng)式為: 3x3+2x23 .概要設(shè)計(jì)1為了實(shí)現(xiàn)上述程序功能,需要定義多項(xiàng)式結(jié)點(diǎn)的抽象數(shù)據(jù)類型:2 class Term數(shù)據(jù)對(duì)象:float coef;該數(shù)據(jù)對(duì)象為多項(xiàng)式一項(xiàng)中的系數(shù).int exp;該數(shù)據(jù)對(duì)象為多項(xiàng)式一項(xiàng)中的指

3、數(shù).Term* link;該數(shù)據(jù)對(duì)象為指向下一個(gè)多項(xiàng)式結(jié)點(diǎn)的指針.根本操作:A. Term ( float c, int e)初始條件:無操作結(jié)果:初始化多項(xiàng)式結(jié)點(diǎn)對(duì)象,將 c賦值給該結(jié)點(diǎn)的數(shù)據(jù)成員coef (表示 系數(shù)), 將e賦值給該結(jié)點(diǎn)的數(shù)據(jù)成員exp (表示指數(shù)),將該結(jié)點(diǎn)的數(shù)據(jù)成員link賦值 為0.(float c, int e, Term* next)初始條件:無操作結(jié)果:初始化多項(xiàng)式結(jié)點(diǎn)對(duì)象,將c賦值給該結(jié)點(diǎn)的數(shù)據(jù)成員coef (表示系數(shù)), 將e賦值給該結(jié)點(diǎn)的數(shù)據(jù)成員exp (表示指數(shù)),將next賦值給該結(jié)點(diǎn)的數(shù)據(jù)成員link (link 表示指向下一個(gè)多項(xiàng)式結(jié)點(diǎn)的指針).

4、C. Term* InsertAfter( float c, int e)初始條件:存在一個(gè)多項(xiàng)式結(jié)點(diǎn)操作結(jié)果:為一個(gè)新的多項(xiàng)式項(xiàng)申請(qǐng)結(jié)點(diǎn),并且用Term進(jìn)行初始化,把this->link 賦值給新項(xiàng)結(jié)點(diǎn)的link ;并且把該新項(xiàng)結(jié)點(diǎn)的指針賦值給this->link ,最后返回一個(gè)指向新 項(xiàng)結(jié)點(diǎn)的指針.D. friend ostream & operator <<(ostream &, const Term &)初始條件:存在一個(gè)多項(xiàng)式結(jié)點(diǎn)操作結(jié)果:輸出一個(gè)多項(xiàng)式結(jié)點(diǎn)中存放的該項(xiàng)的系數(shù)和指數(shù),輸出格式為coef XAexp,其中coef為該結(jié)點(diǎn)所

5、存儲(chǔ)的系數(shù),exp為該結(jié)點(diǎn)所存儲(chǔ)的指數(shù).)3)多項(xiàng)式的抽象數(shù)據(jù)類型如下:class Polynominal 數(shù)據(jù)對(duì)象:Term* theList;該數(shù)據(jù)對(duì)象是多項(xiàng)式的頭指針.根本操作:A. Polynominal ()初始條件:無操作結(jié)果:初始化多項(xiàng)式對(duì)象,構(gòu)造一個(gè)多項(xiàng)式的空的單循環(huán)鏈表.B. -Polynominal ()初始條件:存在一個(gè)多項(xiàng)式對(duì)象操作結(jié)果:當(dāng)多項(xiàng)式對(duì)象的生命周期結(jié)束后,釋放其所占用的內(nèi) 存空間.C. void AddTerms(istream& in);初始條件:存在一個(gè)多項(xiàng)式對(duì)象操作結(jié)果:讓用戶輸入多項(xiàng)式的每一項(xiàng),構(gòu)造單循環(huán)鏈表.D. void Output(o

6、stream& out) const;初始條件:存在一個(gè)多項(xiàng)式對(duì)象操作結(jié)果:調(diào)用Term類上重載的 <<操作,輸出多項(xiàng)式的每一項(xiàng).E. void PolyAdd(Polynominal& r);初始條件:存在兩個(gè)多項(xiàng)式對(duì)象操作結(jié)果:將this指針?biāo)赶虻亩囗?xiàng)式與r多項(xiàng)式相加,相加的結(jié)果存放在 this所指向的多項(xiàng)式中.F. void OpposeCoef();初始條件:存在一個(gè)多項(xiàng)式對(duì)象操作結(jié)果:將this指針?biāo)赶虻亩囗?xiàng)式每一項(xiàng)的系數(shù)取反.PolySubtract(Polynominal& r);初始條件:存在兩個(gè)多項(xiàng)式對(duì)象操作結(jié)果:調(diào)用OpposeCoe

7、f函數(shù),將r多項(xiàng)式的每一項(xiàng)系數(shù)取反;再調(diào)用 PolyAdd函數(shù),將r與this指針?biāo)赶虻亩囗?xiàng)式相加,即得到this指針?biāo)?向多項(xiàng)式減去r多項(xiàng)式的結(jié)果.H. friend ostream & operator <<(ostream &, const Polynominal &)初始條件:存在一個(gè)多項(xiàng)式對(duì)象操作結(jié)果:調(diào)用Output函數(shù),將一個(gè)輸出流對(duì)象返回I . friend istream & operator >>(istream& ,Polynominal &);初始條件:存在一個(gè)多項(xiàng)式對(duì)象操作結(jié)果:調(diào)用AddTe

8、rms函數(shù),將一個(gè)輸入流對(duì)象返回J. friend Polynominal& operator +(Polynominal &,Polynominal &);初始條件:存在兩個(gè)多項(xiàng)式對(duì)象操作結(jié)果:調(diào)用PolyAdd函數(shù),實(shí)現(xiàn)多項(xiàng)式的相加K. friend Polynominal& operator -(Polynominal &,Polynominal &);初始條件:存在兩個(gè)多項(xiàng)式對(duì)象操作結(jié)果:調(diào)用OpposeCoe和olyAdd函數(shù),實(shí)現(xiàn)多項(xiàng)式的相減4)綜上所述,程序中的類圖如圖1所示Term- float coef;- int exp;-

9、Term* link;+Term (float c, int e);+Term (float c, int e, Term* next);+Term* InsertAfter(float c, int e);-friend ostream & operator<<(ostream &,const Term &);Polynominal-Term* theList;+Polynominal ();+Polynominal ();+void AddTerms(istream& in);+void Output(ostream& out)const

10、;+void PolyAdd(Polynominal& r);+void PolySubtract(Polynominal& r);+void OpposeCoef();+friend ostream & operator<<(ostream &,const Polynominal &);+friend istream & operator>>(istream& ,Polynominal &);+friend Polynominal& operator +(Polynominal &,Pol

11、ynominal &);+friend Polynominal& operator -(Polynominal &,Polynominal &);程序包含11個(gè)函數(shù):主函數(shù)main()多項(xiàng)式結(jié)點(diǎn)初始化函數(shù)多項(xiàng)式結(jié)點(diǎn)初始化函數(shù)新申請(qǐng)結(jié)點(diǎn)后,將其插入Term (float c, int e);Term (float c, int e, Term* next);this指針指向的結(jié)點(diǎn)后Term* InsertAfter(float c, int e);多項(xiàng)式構(gòu)造函數(shù)多項(xiàng)式析構(gòu)函數(shù)Polynominal ();Polynominal ();讓用戶輸入多項(xiàng)式的每一項(xiàng),構(gòu)造

12、單循環(huán)鏈表輸出多項(xiàng)式的每一項(xiàng)將兩個(gè)多項(xiàng)式相加將兩個(gè)多項(xiàng)式相減void AddTerms(istream& in);void Output(ostream& out)const;void PolyAdd(Polynominal& r);void PolySubtract(Polynominal& r);O將一個(gè)多項(xiàng)式的每一項(xiàng)系數(shù)取反void OpposeCoef();程序包含5個(gè)運(yùn)算符及操作符重載:friend ostream & operator<<(ostream &,const Polynominal &);friend

13、istream & operator>>(istream& ,Polynominal &);friend Polynominal& operator +(Polynominal &,Polynominal &);friend Polynominal& operator -(Polynominal &,Polynominal &);friend ostream & operator<<(ostream &,const Term &);各函數(shù)問關(guān)系如下:Output4.詳細(xì)設(shè)計(jì)1

14、)多項(xiàng)式結(jié)點(diǎn)類的定義 class Term(public :Term ( float c,int e);Term ( float c,int e, Term* next);R室 請(qǐng) q=qAlerrarminsertiead肉瞬播用否認(rèn)0 ;結(jié)束qAhead = qAhead 調(diào)用InsertAfter 函數(shù),將p項(xiàng)插入到q多項(xiàng)式中;猾點(diǎn)1即-qAhead壇q的前驅(qū)結(jié)點(diǎn)入數(shù)字選擇執(zhí)行不同的功能.輸入1,使用多項(xiàng)式 q+多項(xiàng)式 p功能;A 2:使用多項(xiàng)式q-多項(xiàng)式p功能;輸入其他數(shù)字,那么提示輸入錯(cuò)誤,需要重新輸入數(shù)字選擇功能,直至輸入的數(shù)字為1或2為止.輸入其他數(shù)字后,輸出的畫面如下:您輸入的

15、數(shù)據(jù)有誤,請(qǐng)輸入1或者2,請(qǐng)重新輸入數(shù)字輸入1,使用多項(xiàng)式q+多項(xiàng)式p功能;輸入2,使用多項(xiàng)式q-多項(xiàng)式p功能;輸入1后,輸出畫面如下:EXPJ ;當(dāng)輸入指數(shù)為T時(shí)日時(shí)期人結(jié)束屯西二需要亡篁的多麗式 育人家貞光一項(xiàng)中的系數(shù)和指數(shù)此時(shí)請(qǐng)降幕輸入多項(xiàng)式的各項(xiàng)系數(shù)和指數(shù),當(dāng)輸入的指數(shù)為-5000時(shí),結(jié)束該多項(xiàng)式的輸 入,進(jìn)入下一個(gè)多項(xiàng)式的輸入階段,輸出畫面如下:修畿舞爛蠹窗系數(shù)和指數(shù)即J 5S當(dāng)輸入指數(shù)為T的曲輸入結(jié)束此時(shí)請(qǐng)降幕輸入多項(xiàng)式的各項(xiàng)系數(shù)和指數(shù),當(dāng)輸入的指數(shù)為-5000時(shí),結(jié)束該多項(xiàng)式的輸 入,接著會(huì)打印輸出多項(xiàng)式的相加的結(jié)果.并且輸出:請(qǐng)問是否還需要繼續(xù)進(jìn)行多項(xiàng)式計(jì)算?請(qǐng)輸入 丫或n y

16、-繼續(xù),n-退出此時(shí)輸入y那么繼續(xù)進(jìn)行多項(xiàng)式計(jì)算,畫面回到功能選擇菜單,輸入 n那么退出程序輸入2時(shí),操作步驟和上面的類似.7.測(cè)試結(jié)果根據(jù)下面的多項(xiàng)式進(jìn)行測(cè)試,并且輸入時(shí)互換兩個(gè)多項(xiàng)式,把程序得出的運(yùn)算結(jié)果和人 工計(jì)算結(jié)果比照,程序運(yùn)算結(jié)果全部正確1) +5x8+2x)+( 11x 6+7)=( +5x 8+11x6+2x+7 )2) +( 11x 6+7)=( +11x 6-2x+7 )3) +6x-3)-( := ()43524) (x +x +x +x +x+1)+(-x -x )=( x +x +x+1)5) (x+x )+(-x-x)=06) (x 100+x)+( x 200+x

17、100)=( x 200+2x100+x)7) (x 3+x2+x)+0=x 3+x2+x程序源代碼:#include<iostream>using namespace std;#include<>#include""const int N=-5000;void main()char selection_y_n;int selection_number;doPolynominal p,q;cout<<"請(qǐng)選擇兩個(gè)多項(xiàng)式需要進(jìn)行的運(yùn)算"<<endl;cout<<"1.多項(xiàng)式 q+多項(xiàng)式

18、p"<<endl;cout<<"2.多項(xiàng)式 q-多項(xiàng)式 p"<<endl;cin>>selection_number;while(selection_number!=1)&&(selection_number!=2)cout<<"您輸入的數(shù)據(jù)有誤,請(qǐng)輸入 1或者2,請(qǐng)重新輸入數(shù)字"<<endl;cout<<"請(qǐng)選擇兩個(gè)多項(xiàng)式需要進(jìn)行的運(yùn)算"<<endl;cout<<"1.多項(xiàng)式 q+多項(xiàng)式 p

19、"<<endl;cout<<"2.多項(xiàng)式 q-多項(xiàng)式 p"<<endl<<endl;cin>>selection_number;cout<<請(qǐng)輸入兩個(gè)需要計(jì)算的多項(xiàng)式"«endl;cout<<"請(qǐng)按降哥輸入多項(xiàng)式p"«endl;cin»p;cout«p;cout<<"請(qǐng)按降哥輸入多項(xiàng)式q"«endl;cin»q;cout«q;switch (selec

20、tion_number)(case 1:q=q+p;cout«"多項(xiàng)式q+p的結(jié)果為:"<<endl;cout«q;break;case 2:q=q-p;cout«"多項(xiàng)式q-p的結(jié)果為:"<<endl;cout«q;break;)丫或 n y-繼續(xù),n-退出"«endl;cout<<請(qǐng)問是否還需要繼續(xù)進(jìn)行多項(xiàng)式計(jì)算?請(qǐng)輸入 cin»selection_y_n;while(selection_y_n='y');getchar();ge

21、tchar();以下是Term類的成員函數(shù)及友元函數(shù)的實(shí)現(xiàn)Term:Term(float c, int e)coef=c;exp=e;link=0;Term:Term(float c, int e, Term *next)coef=c;exp=e;link=next;Term* Term:InsertAfter(float c, int e)link=new Term(c,e,link);/重載"<<",讓其輸出多項(xiàng)式的一項(xiàng);return link;stream &operator <<(ostream & out,const Ter

22、m& single)/該模塊不輸出系數(shù)為0.(if=0)return out;if= 1 && !=0);else if=-1 && !=0)out<<"-"elseout<<switch(case 0: break;case 1: out<<"X"break;default: out<<"XA"<<break;)return out;)以下是Polynominal類的實(shí)現(xiàn)和與之相關(guān)的符號(hào)重載Polynominal:Polynomina

23、l()(theList=new Term,N);theList->link=theList;)Polynominal:Polynominal()(Term* temp=theList->link;while(temp!=theList)(theList->link=temp->link;delete temp;temp=theList->link;)delete theList;)void Polynominal:AddTerms(std:istream & in)/該函數(shù)功能為輸入多項(xiàng)式的每一項(xiàng),直至當(dāng)輸入指數(shù)為N時(shí)輸入結(jié)束(Term* temp=the

24、List;float c;int e;while(1)(cout<<"請(qǐng)輸入多項(xiàng)式一項(xiàng)中的系數(shù)和指數(shù)(coef, exp);當(dāng)輸入指數(shù)為"<<N<<"時(shí)輸入結(jié)束"<<endl;cin>>c>>e;if(e=N)break;temp=temp->InsertAfter(c,e);)istream& operator >> (istream& in ,Polynominal &x)(in);return in;)void Polynominal:

25、Output(ostream& out)constint first=1; /first用來判斷輸出的多項(xiàng)式是否為第一項(xiàng),first=1為第一項(xiàng),否那么不是第一項(xiàng).Term* temp=theList->link;if(temp->coef=0)out<<"多項(xiàng)式為:"<<0<<endl;elseout<<"多項(xiàng)式為:"<<endl;for( ;temp!=theList;temp=temp->link)if(!first&&(temp->coef)>0)out<<"+"first=0;out<<*temp;)out<<"n"<<endl;)ostream& operator <<(ostream &out,const Polynominal &x)(out);return ou

溫馨提示

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

評(píng)論

0/150

提交評(píng)論