




已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)習(xí)報(bào)告:1.5題 一元稀疏多項(xiàng)式計(jì)算器實(shí)習(xí)報(bào)告題目:設(shè)計(jì)一個(gè)一元稀疏多項(xiàng)式簡(jiǎn)單計(jì)算器班級(jí):計(jì)科一班 姓名:康宇 學(xué)號(hào):10061014 完成日期:2013.4.15一、需求分析1、一元稀疏多項(xiàng)式簡(jiǎn)單計(jì)算器的功能是:1) 輸入并建立多項(xiàng)式;2) 輸出多項(xiàng)式,輸出形式為整數(shù)序列:n,c1,e1,c2,e2,cn,en,其中n是多項(xiàng)式的項(xiàng)數(shù),ci和ei分別是第i項(xiàng)的系數(shù)和指數(shù),序列按指數(shù)降序排列; 3) 多項(xiàng)式a和b相加,建立多項(xiàng)式a+b;4) 多項(xiàng)式a和b相減,建立多項(xiàng)式a-b。5) 計(jì)算多項(xiàng)式在x處的值;6) 求多項(xiàng)式a、b的導(dǎo)函數(shù); 2、測(cè)試數(shù)據(jù):1、(2x+5x8-3.1x11)+(7-5x8+11x9)=(-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è)計(jì) 為實(shí)現(xiàn)上述程序功能,應(yīng)以有序鏈表來(lái)表示多項(xiàng)式的系數(shù)和指數(shù)。定義線性表的動(dòng)態(tài)分配順序存儲(chǔ)結(jié)構(gòu);建立多項(xiàng)式存儲(chǔ)結(jié)構(gòu),定義指針*next利用鏈表實(shí)現(xiàn)隊(duì)列的構(gòu)造。每次輸入一項(xiàng)的系數(shù)和指數(shù),可以輸出構(gòu)造的一元多項(xiàng)式演示程序以用戶和計(jì)算機(jī)的對(duì)話方式執(zhí)行,即在計(jì)算機(jī)終站上顯示“提示信息”之后,由用戶在鍵盤上輸入演示程序中規(guī)定的運(yùn)行命令;最后根據(jù)相應(yīng)的輸入數(shù)據(jù)(濾去輸入中的非法字符)建立的多項(xiàng)式以及多項(xiàng)式相加的運(yùn)行結(jié)果在屏幕上顯示。 1、元素類型、結(jié)點(diǎn)類型和指針類型:typedef struct LNode float xishu; /系數(shù) int zhishu; /指數(shù) struct LNode *next; LNode,*Linklist; 2、建立兩個(gè)全局鏈表指針,Linklist List1=NULL;Linklist List2=NULL;用來(lái)存放兩個(gè)多項(xiàng)式,然后在main()函數(shù)里調(diào)用輸入函數(shù)。 3、本程序包括7個(gè)模塊 1)主程序: Void main()While(1)輸出菜單;接受命令;處理命令;If(命令=退出)則程序退出;釋放鏈表; 2)輸入函數(shù): Void Input() 調(diào)用插值函數(shù)In(List1)處理鏈表一; 調(diào)用插值函數(shù)In(List2)處理鏈表二;3)輸出函數(shù):Void Output()調(diào)用輸值函數(shù)Out(List1)處理鏈表一;調(diào)用輸值函數(shù)Out(List2)處理鏈表一; 4)相加函數(shù): Void Add()if(List1節(jié)點(diǎn)指數(shù) List2節(jié)點(diǎn)指數(shù))輸出List1節(jié)點(diǎn);指針后移;else if(List1節(jié)點(diǎn)指數(shù) List2節(jié)點(diǎn)指數(shù))輸出List1節(jié)點(diǎn);指針后移;else if(List1節(jié)點(diǎn)指數(shù) List2節(jié)點(diǎn)指數(shù))輸出List2節(jié)點(diǎn);(系數(shù)要取負(fù)再輸出)指針后移;Else兩鏈表指針都后移; if(鏈表1到頭) 輸出鏈表2剩余的節(jié)點(diǎn); else(即鏈表二到頭) 輸出鏈表1剩余的節(jié)點(diǎn); 6)求值函數(shù): void Calc() 輸入x的值; 依次調(diào)用鏈表一的節(jié)點(diǎn),求出單項(xiàng)式的值相加后輸出; 7)求導(dǎo)函數(shù): void Daohanshu() 輸出多項(xiàng)式一的導(dǎo)函數(shù); 三、詳細(xì)設(shè)計(jì)#include #include #include typedef struct LNode /元素類型float xishu;int zhishu;struct LNode *next;LNode, *Linklist;Linklist List1=NULL;Linklist List2=NULL;Linklist In(Linklist L)/依次往鏈尾插Linklist p;float a;int b;Linklist head=(Linklist)malloc(sizeof(LNode);L=head;head-zhishu=0;/head-zhishu頭結(jié)點(diǎn)放的是多項(xiàng)式的項(xiàng)數(shù)p=head;p-next=NULL;printf(請(qǐng)輸入一個(gè)多項(xiàng)式:n);while(scanf(%f %d,&a,&b)&(a|b)/默認(rèn)多項(xiàng)式是按指數(shù)由小到大輸入/printf(%f %dn,a,b);(head-zhishu)+;/printf(%3dn,L-zhishu);Linklist q=(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(您已成功輸入一個(gè)多項(xiàng)式!n);return L;void Input()List1=In(List1);List2=In(List2);void Out(Linklist L)Linklist p;p=L-next;printf(此多項(xiàng)式有%3d項(xiàng) ,L-zhishu);while(p!=NULL)/按指數(shù)由大到小輸出printf(%0.1f %3d ,p-xishu,p-zhishu);p=p-next;printf(n);void Output()printf(第一個(gè)多項(xiàng)式為:n);Out(List1);printf(第二個(gè)多項(xiàng)式為:n);Out(List2);void Add()Linklist p1,p2;p1=List1-next;p2=List2-next;printf(相加后的多項(xiàng)式為:n);while(p1&p2)if(p1-zhishup2-zhishu)printf(%0.1f %3d ,p1-xishu,p1-zhishu);p1=p1-next;else if(p1-zhishuzhishu)printf(%0.1f %3d ,p2-xishu,p2-zhishu);p2=p2-next;elseprintf(%0.1f %3d ,p1-xishu+p2-xishu,p1-zhishu);p1=p1-next;p2=p2-next;if(p1=NULL)while(p2)printf(%0.1f %3d ,p2-xishu,p2-zhishu);p2=p2-next;elsewhile(p1)printf(%0.1f %3d ,p1-xishu,p1-zhishu);p1=p1-next;printf(n);void Sub()Linklist p1,p2;p1=List1-next;p2=List2-next;printf(相減后的多項(xiàng)式為:n);while(p1&p2)if(p1-zhishup2-zhishu)printf(%0.1f %3d ,p1-xishu,p1-zhishu);p1=p1-next;else if(p1-zhishuzhishu)printf(%0.1f %3d ,-p2-xishu,p2-zhishu);p2=p2-next;elseif(p1-xishu-p2-xishu!=0)printf(%0.1f %3d ,p1-xishu-p2-xishu,p1-zhishu);p1=p1-next;p2=p2-next;if(p1=NULL)while(p2)printf(%0.1f %3d ,-p2-xishu,p2-zhishu);p2=p2-next;elsewhile(p1)printf(%0.1f %3d ,p1-xishu,p1-zhishu);p1=p1-next;printf(n);void Calc()int x;double sum=0;Linklist p;printf(請(qǐng)輸入x的值:);scanf(%d,&x);p=List1-next;while(p)sum+=p-xishu*pow(x,p-zhishu);p=p-next;printf(多項(xiàng)式1在x處的值為:%0.1lf,sum);printf(n);void Daohanshu()Linklist p;p=List1-next;printf(多項(xiàng)式1的導(dǎo)函數(shù)為:n);while(p)printf(%0.1f %3d ,p-xishu*p-zhishu,p-zhishu-1);p=p-next;printf(n);int main()int num;while(1)printf(-n);printf(1-輸入并建立多項(xiàng)式;n);printf(2-輸出其指系數(shù)排列;n);printf(3-多項(xiàng)式相加;n);printf(4-多項(xiàng)式相減;n);printf(5-計(jì)算多項(xiàng)式在x處的值;n);printf(6-求多項(xiàng)式a的導(dǎo)函數(shù)a;n);printf(0-退出n);printf(-n);printf(請(qǐng)輸入您要選擇的功能:);scanf(%d,&num);switch(num)case 1:Input();break;/輸入函數(shù)case 2:Output();break;/輸出函數(shù)case 3:Add();break;/函數(shù)相加case 4:Sub();break;/函數(shù)相減case 5:Calc();break;/計(jì)算函數(shù)在x處的值case 6:Daohanshu();break;/求函數(shù)的導(dǎo)函數(shù)case 0:exit(1);default :printf(輸入錯(cuò)誤,請(qǐng)重新輸入!);free(List1);free(List2);return 0;四、調(diào)試分析1.由于鏈表是設(shè)置成為全局變量,所以任意函數(shù)都可以修改它,存在一定風(fēng)險(xiǎn)性。但這也為后來(lái)的函數(shù)方便了,所有的函數(shù)統(tǒng)一沒(méi)有參數(shù)。2.剛開(kāi)始時(shí)曾忽略了一些變量的類型以及沒(méi)有考慮到指針的返回問(wèn)題,使調(diào)試程序浪費(fèi)了一定的時(shí)間。今后應(yīng)重視確定參數(shù)的變量和賦值屬性的區(qū)分和標(biāo)識(shí)。3.本程序模塊
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)大型水力碎漿機(jī)篩板市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)人造毛汽車靠背市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)AVS實(shí)時(shí)編碼器市場(chǎng)調(diào)查研究報(bào)告
- 2025年高密度電阻率儀合作協(xié)議書
- GB 45673-2025《危險(xiǎn)化學(xué)品企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化規(guī)范》之“5.1安全領(lǐng)導(dǎo)力”審核檢查單
- 跨界學(xué)習(xí)2025年建筑施工安全考試試題及答案
- 《多元配置》課件
- 2025年復(fù)方芩蘭口服液項(xiàng)目合作計(jì)劃書
- 2025深圳個(gè)人房屋租賃合同范本aa
- 2025年新型節(jié)能水泵、風(fēng)機(jī)和壓縮機(jī)項(xiàng)目建議書
- 可穿戴式設(shè)備安全可靠性技術(shù)規(guī)范 腕戴式設(shè)備
- 內(nèi)科學(xué)動(dòng)脈粥樣硬化和冠狀動(dòng)脈粥樣硬化性心臟病
- ×××章程修訂對(duì)比表
- 《運(yùn)算的意義》(教學(xué)設(shè)計(jì))-2023-2024學(xué)年六年級(jí)下冊(cè)數(shù)學(xué)北師大版
- 高效養(yǎng)中蜂關(guān)鍵技術(shù)
- 廣州小學(xué)六年級(jí)英語(yǔ)下冊(cè)知識(shí)點(diǎn)歸納和習(xí)題(全冊(cè))
- (正式版)JTT 1482-2023 道路運(yùn)輸安全監(jiān)督檢查規(guī)范
- MH-T 5035-2017民用機(jī)場(chǎng)高填方工程技術(shù)規(guī)范
- MOOC 數(shù)據(jù)挖掘-國(guó)防科技大學(xué) 中國(guó)大學(xué)慕課答案
- 測(cè)溫儀及測(cè)振儀的原理及使用 課件
- 船舶操縱與避碰智慧樹知到期末考試答案2024年
評(píng)論
0/150
提交評(píng)論