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

下載本文檔

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

文檔簡介

1、每組人數(shù)1實驗機械編號日期2009年6月22日實驗室名稱WM2301機房目:一元多項式運算二、設(shè)計內(nèi)容:用C+語言編寫一段程序,該程序的功能相當(dāng)于一個一元多項式計算器。它能夠?qū)崿F(xiàn)依照指數(shù)降序排列成立并輸出多項式,而且能夠完成兩個多項式的相加、相減的運算和將其結(jié)果輸入的功能。三、設(shè)計實現(xiàn):1 .依照輸入創(chuàng)建一元多項式,并用鏈表實現(xiàn)存儲。2 .對已創(chuàng)建的的兩個一元多項式進行運算,該題目要實現(xiàn)的運算有,一元多項式加法、減法、乘法運算。3 .一次運算完成實現(xiàn)鏈表清空操作,可同意用戶從頭輸入。三、要緊模塊:1 .一元多項式的成立。2 .顯示一"兀多項式。3 一元多項式加法運算。4 .一元多項式

2、減法運算。5 .一元多項式乘法運算。6 .一元多項式清空。四、程序設(shè)計思想:要緊內(nèi)容是對一元多項式存儲結(jié)構(gòu)的選擇,輸入多項式采納頭插法的方式,輸入多項式中一個項的系數(shù)和指數(shù),就產(chǎn)生一個新的節(jié)點,成立起它的右指針,并用頭節(jié)點指向它;盡管一元多項式能夠用順序和鏈?zhǔn)絻煞N存儲結(jié)構(gòu)表示,但順序結(jié)構(gòu)的最大長度很難確信。比如當(dāng)多項式的系數(shù)較大時,現(xiàn)在就會浪費了龐大的存儲空間,因此應(yīng)該選擇用鏈?zhǔn)酱鎯Y(jié)構(gòu)來存儲一元多項式。單鏈表的結(jié)構(gòu)體能夠用來存儲多項式的系數(shù),指數(shù),如此便于實現(xiàn)任意多項式的運算。五、主程序流程圖:六、程序主界面:建法法乘出空出 新加誡相輸清退 ©:VirtualMachines住析洪

3、享'誤程沒計0423一元妥以運算.exe元多項式的運算:清選怪:七、程序運行結(jié)果:SBH:ViftualMachines住仇共享俁程沒計0423一元多項運算.exe元冬項式的運算(1_(2x3><5_t.x7)暹算新建加注運算減法運算漸出g工退出請選擇門請輸入需要運算的第一個一元多項式的頂數(shù);請輸入第1項的系數(shù)和指數(shù):系數(shù)r1指鍬=請輸入第2項的系數(shù)和指教:2據(jù)賴:請輸入第3項的系數(shù)和指數(shù):系數(shù)旦3指覺=請輸入需要運算的第二個一元多項式的項教=2請輸入第1項的系數(shù)和指數(shù):系熨,21指額:請輸A第2項的系數(shù)和指數(shù):家教3一元多項式輸入界面32H:VirtualMachines

4、住t膚拿'課程設(shè)計0423一元多項運算,exe=一元名麗式的運算算算算 運運運 建商乘出空出 新恩相榆堪 ®®請選擇:2待相加的的個一元多項式為:口的多項式為:雜92或廣3B的多項式為:相加后的結(jié)果為:3x+x"«3xJ請按任意鍵繼續(xù)加法運算SBH:ViftualMachines住機接享浪程沒計0423一元多項運算.exe=一元名麗式的運算算算算運運運 建商乘出空出 新恩相榆醇 ©0相減的兩個一元多頂式為,自的多項式為:xX2,2x人3B的多項式為,2xM3相演箔的結(jié)果為:-x+x"+/3請按任意鍵繼續(xù).減法運算32H:Vir

5、tualMachines住t膚拿'課程設(shè)計0423一元多項運算,exe=一元名麗式的運算相乘的兩個一元多頂式為,算算算 運運運 建商乘出空出 新恩相榆堪 ®®請選擇:4»的多項式為:X”人2-2/3R的多I頁式為,2x,xf相乘后的結(jié)果為:2x人2,2x=+5xy-/5,2xA6請按任意鍵繼續(xù)乘法運算SBH:ViftualMachines住機接享浪程沒計0423一元多項運算.exe=一元名麗式的運算算算算運運運 建商乘出空出 新恩相榆醇 ©0_a,請選譯:5一兀多項式A為x*x2*2x3一元多項式B為:2x+x人3請抵任意鍵繼續(xù)輸出八、體會和總結(jié)

6、:課程設(shè)計終于做完了,盡管有些疲勞和困倦,但帶給我很多的收成。數(shù)絕結(jié)構(gòu)已經(jīng)學(xué)了一個學(xué)期,可能三個多月了,有許多知識都存在似懂非懂的現(xiàn)象,這種現(xiàn)象通過實際的上機操作,實際應(yīng)用,已經(jīng)減少了許多。對這些知識也有了更深的明白得和專門好的把握。許多困惑,有許多已經(jīng)通過實際操作解決了,并能夠深刻熟悉,但也有很多沒有明白。通過課程設(shè)計,明白到了原先開發(fā)一個小小的有效系統(tǒng),是需要考慮到很多方面的問題的,這些都是要在實踐中試探的,這與平常做練習(xí)是不同的,但也因為平常有許多的練習(xí)基礎(chǔ),會使你做啟程序來,加倍駕輕就熟。另外確實是要把錯誤總結(jié),有許多錯誤或陷阱是平常自己陷進去的,因此很深刻,但也有些錯誤或陷阱是自己尚

7、未接觸或犯過的,這就應(yīng)該看多些他人的總結(jié),使自己不犯這些錯誤。不讓自己掉進這些陷阱。如此長期總結(jié),會對自己有專門大的幫忙。附錄:程序源代碼#include<iostream>#include<>#include<>usingnamespacestd;structNodefloatcoef;xp=-l;oef;cout<<"指數(shù):"cin»(newp->data)exp;if(ncwp-><0)(cout«"您輸入有誤,指數(shù)不許諾為負(fù)值!"Gendl;deletenewp

8、;i;continue;)newp->next=NULL;P=L;if(newp->=0)(cout<<”系數(shù)為零,從頭輸入!”endl;deletenewp;i;continue;)while(p->next!=NULL)&&(p->next->data)exp<(newp->data).exp)(p=p->next;oef>0)if(p->data).exp=0)cout«(p->data).coef;elseif(p->data).coef=l&&(p->d

9、ata).exp=l)cout«"x”;elseif(p->data).coef=1&&(p->data).exp!=l)cout«*xAJ*«(p->data).exp;elseif(p->data).exp=l&&(p->data).coef!=1)cout«(p->data).coef<<"x"elsecout«(p->data).coef«x(p->data).exp;)oef<0)if(p->

10、data).exp=0)cout«(p->data)coef;elseif(p->=-l&&p->=l)elseif(p->=-l&&p->!=l)COUt<<"-XAx«p->elseif(p->=l)cout«p-><<"x"elsecout«(p->data)coef«x*«(p->data).exp;)p=p->next;while(p!=NULL)(if(p->data

11、),coef>0)(if(p->data).exp=0)cout<<"+”<<(p->data).coef;elseif(p->data).exp=l&&(p->data).coef!=1)cout«(p->data).coef«"x"elseif(p->data).exp=l&&(p->data)coef=l)cout«*+*«*x*;elseif(p->data)>coef=l&&(p-&g

12、t;data).exp!=l)cout«"+"<"xexp;elsecout<<"+"<<(p->data).coef«"x"«(p->data).exp;if(p->data).coef<0)if(p->data).exp=0)cout«(p->data)coef;elseif(p->=-l&&p->=l)cout«"-x"elseif(p->=-l&am

13、p;&p->!=l)c<nrt<"-x-"<<p->elseif(p->=l)cout<p->«"x”;elsecout«(p->data).coef«x*«(p->data).exp;)p=p->next;)cout«endl;/*把一個鏈表的內(nèi)容復(fù)制給另一個鏈表*/voidCopyLink(Link&pc>Linkpa)(Linkp,q,r;pc=newLNode;pc->next=NULL;r=pc;P=pa;

14、while(p->next!=NULL)(q=newLNode;q->=p->next->q->=p->ncxt->r->next=q;q->next=NULL;r=q;p=p->next;)/*將兩個一元多項式相加*/voidPolyAdd(Link&pc,Linkpa,Linkpb)Linkpl,p2,p,pd;CopyLink(pl,pa);CopyLink(p2,pb);pc=newLNode;pc->next=NULL;P=Pc;pl=pl->next;p2=p2->next;while(pl!=N

15、ULL&&p2!=NULL)if(pl-Xp2->p->next=pl;p=p->next;pl=pl->next;)elseif(pl-»p2->(p->next=p2;p=p->next;p2=p2->next;)else(pl->=pl->+p2->if(pl->!=0)(p->next=pl;p=p->next;pl=pl->next;p2=p2->next;)else(pd=pl;pl=pl->next;p2=p2->next;deletepd;)if

16、(pl!=NULL)(p->next=pl;)if(p2!=NULL)p->next=p2;)/*將兩個多項式相減*/voidPolySubstract(Link&pc,Linkpa,Linkpb)Linkp,pt;CopyLinkCptpb);P=Pt;while(p!=NULL)(p->data).coef=(-(p->data).coef);p=p->next;)PolyAdd(pc,pa>pt);DcstroyLink(pt);)清屏函數(shù)voidClear0system("pause");system("cls&

17、quot;);/*將兩個一元多項式相乘*/voidPolyMultiply(Link&pc,Linkpa,Linkpb)(Linkpl,p2>p,pd,newp,t;pc=ncwLNode;pc->next=NULL;pl=pa->next;p2=pb->next;while(pl!=NULL)(pd=newLNode;pd->next=NULL;p=newLNode;p->next=NULL;t=p;while(p2)(newp=newLNode;newp->next=NULL;newp->=pl->*p2->newp-&g

18、t;=pl->+p2->t->next=newp;t=t->next;p2=p2->next;)PolyAdd(pd,pc,p);CopyLink(pc,pd);pl=pl->next;p2=pb->next;DestroyLink(p);DestroyLink(pd);)菜單函數(shù)voidMenu()cout«*«endl;cout«endl;cout«*t“<<endl;cout«*tcout«*tcout«*tcout«*tcout«"t

19、cout«*tcout«*tcout«*tcout«*tcout«*t*«endl;r元多項式的運算|*«endl;ttt新建tttttt加法運算tttttt減法運算tttttt®相乘運算tttttt輸出tttttt清空tttttt退出tttI"<<endl;|"<<endl;I*«endl;I«endl;|*«endl;I"<<endl;|"<<endl;cout«*tttt請選擇:&q

20、uot;判定輸入的整數(shù)是不是為1到7的數(shù)字intComparelfNum(inti)(if(i>0&&i<8)return0;elsereturn1;)voidmainO(system(*color4");/systemCpause);system("colorE");system("pause");)intn;LinkL,La=NULL,Lb=NULL;/La,Lb別離為創(chuàng)建的兩個多項式intchoose;while(Menu。;挪用菜單函數(shù)cin»choose;switch(choose)(case1:

21、cout«”請輸入需要運算的第一個一元多項式的項數(shù):*«endl;cin»n;if(CompareIfNum(n)=1)(cout«"輸入有誤,請從頭輸入*«endl;Clear0;break;CreateLink(La,n);cout<<”請輸入需要運算的第二個一元多項式的項數(shù):”endl;cin»n;if(Comp«ureIfNum(n)=1)(cout<”輸入有誤,請從頭輸入"<<endl;Clear0;break;)CreateLink(Lb,n);Clear0;br

22、eak;case2:if(La=NULL|Lb=NULL)(cout«”多項式創(chuàng)建錯誤,請從頭選擇*«endl;Clear0;break;)PolyAdd(L,La,Lb);cout«*«endl;cout<<"待相加的兩'一元多項式為:"<<endl;cout«”“endl;cout«"A的多項式為:”;PrintList(La);cout<<*"«endl;cout«"B的多項式為:”;PrintList(Lb);co

23、ut«=“<endl;COUt«”相加后的結(jié)果為:";PrintList(L);cout«*«endl;Clear();DestroyLink(L);break;case3:if(La=NULL|Lb=NULL)(cout«”多項式創(chuàng)建錯誤,請從頭選擇*«endl;Clear0;break;)PolySubstract(L,La,Lb);cout<<”相減的兩個一元多項式為:*«endl;cout«""«endl;cout«"A的多項式為:”;PrintList(La);cout«"“<endl;cout«"B的多項式為:”;PrintList(Lb);cout«*«endl;cout<<”相減后的結(jié)果為:”;PrintList(L);cout«*«endl;Clear();DestroyLink(L);break;case4:if(La=NULL|Lb=NULL)(cout«”多項式創(chuàng)建錯誤,請從頭選擇*«endl;C

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論