數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(一元稀疏多項式計算器)_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(一元稀疏多項式計算器)_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(一元稀疏多項式計算器)_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(一元稀疏多項式計算器)_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(一元稀疏多項式計算器)_第5頁
免費預(yù)覽已結(jié)束,剩余6頁可下載查看

下載本文檔

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

文檔簡介

1、=WORD完滿版-可編寫-專業(yè)資料分享=實習(xí)報告:1.5題一元稀罕多項式計算器實習(xí)報告題目:設(shè)計一個一元稀罕多項式簡單計算器班級:計科一班姓名:康宇學(xué)號:完成日期:一、需求解析1、一元稀罕多項式簡單計算器的功能是:1)輸入并建立多項式;2)輸出多項式,輸出形式為整數(shù)序列:n,c1,e1,c2,e2,cn,en,其中n是多項式的項數(shù),ci和ei分別是第i項的系數(shù)和指數(shù),序列按指數(shù)降序排列;3)多項式a和b相加,建立多項式a+b;4)多項式a和b相減,建立多項式a-b。5)計算多項式在x處的值;6)求多項式a、b的導(dǎo)函數(shù);2、測試數(shù)據(jù):1、(2x+5x8-3.1x11)+(7-5x8+11x9)=

2、(-3.1x11+11x9+2x+7);2、(6x-3-x+4.4x2-1.2x9+1.2x9)-(-6x-3+5.4x2-x2+7.8x15)=(-7.8x15-1.2x9+12x-3-x);3、(1+x+x2+x3+x4+x5)+(-x3-x4)=(1+x+x2+x5);4、(x+x3)+(-x-x3)=0;5、(x+x100)+(x100+x200)=(x+2x100+x200);6、(x+x2+x3)+0=x+x2+x3.二、大綱設(shè)計為實現(xiàn)上述程序功能,應(yīng)以有序鏈表來表示多項式的系數(shù)和指數(shù)。定義線性表的動向分配序次儲藏構(gòu)造;建立多項式儲藏構(gòu)造,定義指針*next利用鏈表實現(xiàn)隊列的構(gòu)造。

3、每次輸入一項的系數(shù)和指數(shù),可以輸出構(gòu)造的一元多項式演示程序以用戶和計算機的對話方式執(zhí)行,即在計算機終站上顯示“提示信息”此后,由用戶在鍵盤上輸入演示程序中規(guī)定的運行命令;最后依照相應(yīng)的輸入數(shù)據(jù)(濾去輸入中的非法字符)建立的多項式以及多項式相加的運行結(jié)果在屏幕上顯示。、元素種類、結(jié)點種類和指針種類:typedefstructLNodefloatxishu;/系數(shù)intzhishu;/指數(shù)structLNode*next;LNode,*Linklist;、建立兩個全局鏈表指針,-完滿版學(xué)習(xí)資料分享-=WORD完滿版-可編寫-專業(yè)資料分享=LinklistList1=NULL;LinklistLis

4、t2=NULL;用來存放兩個多項式,爾后在main()函數(shù)里調(diào)用輸入函數(shù)。、本程序包括7個模塊)主程序:Voidmain()While(1)輸出菜單;接受命令;辦理命令;If(命令=退出)則程序退出;釋放鏈表;)輸入函數(shù):VoidInput()調(diào)用插值函數(shù)In(List1)辦理鏈表一;調(diào)用插值函數(shù)In(List2)辦理鏈表二;輸出函數(shù):VoidOutput()調(diào)用輸值函數(shù)Out(List1)辦理鏈表一;調(diào)用輸值函數(shù)Out(List2)辦理鏈表一;4)相加函數(shù):VoidAdd()if(List1節(jié)點指數(shù)List2節(jié)點指數(shù))輸出List1節(jié)點;指針后移;elseif(List1節(jié)點指數(shù)List2節(jié)

5、點指數(shù))輸出List1節(jié)點;指針后移;elseif(List1節(jié)點指數(shù)List2節(jié)點指數(shù))輸出List2節(jié)點;(系數(shù)要取負(fù)再輸出指針后移;)Else兩鏈表指針都后移;if(鏈表1到頭)輸出鏈表2節(jié)余的節(jié)點;else(即鏈表二到頭)輸出鏈表1節(jié)余的節(jié)點;)求值函數(shù):voidCalc()輸入x的值;依次調(diào)用鏈表一的節(jié)點,求出單項式的值相加后輸出;7)求導(dǎo)函數(shù):voidDaohanshu()輸出多項式一的導(dǎo)函數(shù);三、詳細(xì)設(shè)計#include#include#includetypedefstructLNode/元素種類floatxishu;intzhishu;structLNode*next;LNod

6、e,*Linklist;LinklistList1=NULL;LinklistList2=NULL;LinklistIn(LinklistL)/依次往鏈尾插-完滿版學(xué)習(xí)資料分享-=WORD完滿版-可編寫-專業(yè)資料分享=Linklistp;floata;intb;Linklisthead=(Linklist)malloc(sizeof(LNode);L=head;head-zhishu=0;/head-zhishu頭結(jié)點放的是多項式的項數(shù)p=head;p-next=NULL;printf(請輸入一個多項式:n);while(scanf(%f%d,&a,&b)&(a|b)/默認(rèn)多項式是按指數(shù)由小到

7、大輸入/printf(%f%dn,a,b);(head-zhishu)+;/printf(%3dn,L-zhishu);Linklistq=(Linklist)malloc(sizeof(LNode);q-xishu=a;q-zhishu=b;if(p-next=NULL)p-next=q;q-next=NULL;p=head;elseif(p-next-zhishuzhishu)q-next=p-next;p-next=q;p=head;elsep=p-next;printf(您已成功輸入一個多項式!n);returnL;voidInput()List1=In(List1);List2=In

8、(List2);-完滿版學(xué)習(xí)資料分享-=WORD完滿版-可編寫-專業(yè)資料分享=voidOut(LinklistL)Linklistp;p=L-next;printf(此多項式有%3d項,L-zhishu);while(p!=NULL)/按指數(shù)由大到小輸出printf(%0.1f%3d,p-xishu,p-zhishu);p=p-next;printf(n);voidOutput()printf(第一個多項式為:n);Out(List1);printf(第二個多項式為:n);Out(List2);voidAdd()Linklistp1,p2;p1=List1-next;p2=List2-next

9、;printf(相加后的多項式為:n);while(p1&p2)if(p1-zhishup2-zhishu)printf(%0.1f%3dp1=p1-next;,p1-xishu,p1-zhishu);elseif(p1-zhishuzhishu)printf(%0.1f%3dp2=p2-next;,p2-xishu,p2-zhishu);elseprintf(%0.1f%3dp1=p1-next;p2=p2-next;,p1-xishu+p2-xishu,p1-zhishu);-完滿版學(xué)習(xí)資料分享-=WORD完滿版-可編寫-專業(yè)資料分享=if(p1=NULL)while(p2)printf(

10、%0.1f%3dp2=p2-next;,p2-xishu,p2-zhishu);elsewhile(p1)printf(%0.1f%3dp1=p1-next;,p1-xishu,p1-zhishu);printf(n);voidSub()Linklistp1,p2;p1=List1-next;p2=List2-next;printf(相減后的多項式為:n);while(p1&p2)if(p1-zhishup2-zhishu)printf(%0.1f%3dp1=p1-next;,p1-xishu,p1-zhishu);elseif(p1-zhishuzhishu)printf(%0.1f%3dp

11、2=p2-next;,-p2-xishu,p2-zhishu);elseif(p1-xishu-p2-xishu!=0)printf(%0.1f%3d,p1-xishu-p2-xishu,p1-zhishu);p1=p1-next;p2=p2-next;-完滿版學(xué)習(xí)資料分享-=WORD完滿版-可編寫-專業(yè)資料分享=if(p1=NULL)while(p2)printf(%0.1f%3d,-p2-xishu,p2-zhishu);p2=p2-next;elsewhile(p1)printf(%0.1f%3dp1=p1-next;,p1-xishu,p1-zhishu);printf(n);void

12、Calc()intx;doublesum=0;Linklistp;printf(請輸入x的值:);scanf(%d,&x);p=List1-next;while(p)sum+=p-xishu*pow(x,p-zhishu);p=p-next;printf(多項式1在x處的值為:%0.1lf,sum);printf(n);voidDaohanshu()Linklistp;p=List1-next;printf(多項式1的導(dǎo)函數(shù)為:n);while(p)-完滿版學(xué)習(xí)資料分享-=WORD完滿版-可編寫-專業(yè)資料分享=printf(%0.1f%3d,p-xishu*p-zhishu,p-zhishu-

13、1);p=p-next;printf(n);intmain()intnum;while(1)printf(-n);printf(1-輸入并建立多項式;n);printf(2-輸出其指系數(shù)排列;n);printf(3-多項式相加;n);printf(4-多項式相減;n);printf(5-計算多項式在x處的值;n);printf(6-求多項式a的導(dǎo)函數(shù)a;n);printf(0-退出n);printf(-n);printf(請輸入您要選擇的功能:);scanf(%d,&num);switch(num)case1:Input();break;/輸入函數(shù)case2:Output();break;/輸

14、出函數(shù)case3:Add();break;/函數(shù)相加case4:Sub();break;/函數(shù)相減case5:Calc();break;/計算函數(shù)在x處的值case6:Daohanshu();break;/求函數(shù)的導(dǎo)函數(shù)case0:exit(1);default:printf(輸入錯誤,請重新輸入!);free(List1);free(List2);return0;四、調(diào)試解析由于鏈表是設(shè)置成為全局變量,所以任意函數(shù)都可以更正它,存在必然風(fēng)險性。但這也為此后的函數(shù)方便了,所有的函數(shù)一致沒有參數(shù)。2.剛開始時曾忽略了一些變量的種類以及沒有考慮到指針的返回問題,使調(diào)試程序浪費了一定的時間。今后應(yīng)重視確定參數(shù)的變量和賦值屬性的區(qū)分和表記。本程序模塊簡潔,在main()函數(shù)里獲取充分表現(xiàn);鏈表默認(rèn)用戶輸入是按指數(shù)從小到大的序次輸入的,而默認(rèn)輸出時按指數(shù)從大到??;輸入-完滿版學(xué)習(xí)資料分享-=W

溫馨提示

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

最新文檔

評論

0/150

提交評論