版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.課程設(shè)計(jì)報(bào)告1. 需求分析【問(wèn)題描述】設(shè)計(jì)一個(gè)一元稀疏多項(xiàng)式簡(jiǎn)單計(jì)算器.【基本要求】一元稀疏多項(xiàng)式基本功能包括: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;【測(cè)試數(shù)據(jù)】1) (2x+5x8-3.1x11)+(11x9-5x8+7)=(-3.1x11+11x8+2x+7)2) (-1.2x9+6x-3+4.4x2-x)-(7.8x15+4.4x2-6x-3)=(
2、-7.8x15-1.2x9+12x-3-x)3) (x5+x4+x3+x2+x+1)-(-x4-x3)=(x5+x2+x+1)4) (x3+x)-(-x3-x)=05) (x100+x)+(x200+x100)=(x200+2x100+x)6) (x3+x2+x)+0=x3+x2+x7) 互換上述測(cè)試數(shù)據(jù)中的前后兩個(gè)多項(xiàng)式.2. 概要設(shè)計(jì)ADT Polynomial數(shù)據(jù)對(duì)象: D=ai|aiTermSet, i=1,2,m,m0,TermSet中的每個(gè)元素包含一個(gè)表示系數(shù)的實(shí)數(shù)和表示指數(shù)的整數(shù)數(shù)據(jù)對(duì)象: R1=|ai,ai-1D,且ai-1中的指數(shù)值小于ai中的指數(shù),i=2,m基本操作:Cre
3、atePolyn(void)Result: 指數(shù)由大到小輸入m項(xiàng)的系數(shù)和指數(shù),建立一元多項(xiàng)式pPrintPoly (LNode Head)Result: 輸出一元多項(xiàng)式AddPoly (LNode H1,LNode H2) Condition: 一元多項(xiàng)式pa,pb已存在Result: 完成多項(xiàng)式相加運(yùn)算,即pa=pa+pb,并銷毀一元多項(xiàng)式pb.SubtractPoly (LNode H1,LNode H2)Condition: 一元多項(xiàng)式pa,pb已存在Result: 完成多項(xiàng)式相減運(yùn)算,即pa=pa-pb,并銷毀一元多項(xiàng)式pb.ADT Polynomial3. 詳細(xì)設(shè)計(jì)【數(shù)據(jù)類型定義】t
4、ypedef struct node int expn,coef; struct node *next;Nodetype,*LNode; /定義結(jié)點(diǎn)類型【函數(shù)原型定義】LNode CreatePolyn(void);Void PrintPoly (LNode Head);LNode AddPolyn(LNode H1,LNode H2);LNode SubPolyn(LNode H1,LNode H2);【核心算法描述】CreatePolyn()LNode CreatePolyn(void) /創(chuàng)建表達(dá)式 LNode Head,p,pre,pree; int x,z; Head=(LNode)
5、malloc(sizeof(Nodetype); Head-next=NULL; printf(當(dāng)你輸入的系數(shù)為0時(shí),輸入將結(jié)束!n); printf(請(qǐng)輸入第一項(xiàng)系數(shù):); scanf(%d,&x); if(x=0) p=(LNode)malloc(sizeof(LNode); p-coef=0; p-expn=0; Head-next=p; p-next=NULL; while(x!=0) printf(請(qǐng)輸入指數(shù):); scanf(%d,&z); p=(LNode)malloc(sizeof(Nodetype); p-coef=x; p-expn=z; pre=Head; while(p
6、re-next&pre-next-expn=z)/原有項(xiàng)指數(shù)大于插入項(xiàng) pree=pre; pre=pre-next; p-next=pre-next;/插入項(xiàng) pre-next=p; if(pre-expn=p-expn)/原有項(xiàng)指數(shù)等于插入項(xiàng) pre-coef+=p-coef; pre-next=p-next; free(p); if(pre-coef=0)/系數(shù)為0 pree-next=pre-next; free(pre); printf(請(qǐng)輸入系數(shù):); scanf(%d,&x); if(Head-next=NULL)/多項(xiàng)式空 pre=(LNode)malloc(sizeof(LN
7、ode); pre-coef=0; pre-expn=0; pre-next=Head-next; Head-next=pre; return Head;PrintPolyn()void PrintPolyn(LNode Head) /輸出表達(dá)式 LNode pre; pre=Head-next; if(pre-expn=0)/指數(shù)為0 printf(%d,pre-coef); else printf(%d*X(%d),pre-coef,pre-expn); pre=pre-next; while(pre)/系數(shù)不為0 if(pre-expn=0)/指數(shù)為0 if(pre-coef0) pri
8、ntf(+%d,pre-coef); else if(pre-coefcoef); else/指數(shù)不為0 if(pre-coef0) printf(+%d*X(%d),pre-coef,pre-expn); else if(pre-coefcoef,pre-expn); pre=pre-next;/遍歷每一項(xiàng) printf(n);AddPolyn()LNode AddPolyn(LNode H1,LNode H2) /表達(dá)式相加 LNode H3,p1,p2,p3,pre;/p1第一個(gè)多項(xiàng)式的項(xiàng),pre p的前一項(xiàng) H3=(LNode)malloc(sizeof(LNode); H3-next
9、=NULL; /建立一個(gè)空的多項(xiàng)式 p1=H1-next; /第一個(gè)多項(xiàng)式的第一項(xiàng) p2=H2-next; pre=H3; / while(p1&p2) if(p1-expnp2-expn)/第一個(gè)多項(xiàng)式的項(xiàng)的指數(shù)大于第二個(gè)的 p3=(LNode)malloc(sizeof(LNode); p3-expn=p1-expn; p3-coef=p1-coef; p3-next=pre-next; pre-next=p3; pre=p3; p1=p1-next; else if(p1-expnexpn)/第一個(gè)多項(xiàng)式的項(xiàng)的指數(shù)小于第二個(gè)的 p3=(LNode)malloc(sizeof(LNode)
10、; p3-expn=p2-expn; p3-coef=p2-coef; p3-next=pre-next; pre-next=p3; pre=p3; p2=p2-next; else if(p1-coef+p2-coef!=0)/相加為不0,指數(shù)相同系數(shù)相加 p3=(LNode)malloc(sizeof(LNode); p3-expn=p1-expn; p3-coef=p1-coef+p2-coef; p3-next=pre-next; pre-next=p3; pre=p3; p1=p1-next; p2=p2-next; else/相加為0 p1=p1-next; p2=p2-next;
11、 while(p2) p3=(LNode)malloc(sizeof(LNode); p3-expn=p2-expn; p3-coef=p2-coef; p3-next=pre-next; pre-next=p3; pre=p3; p2=p2-next; while(p1) p3=(LNode)malloc(sizeof(LNode); p3-expn=p1-expn; p3-coef=p1-coef; p3-next=pre-next; pre-next=p3; pre=p3; p1=p1-next; return H3;Substract()LNode SubstractPolyn(LNo
12、de H1,LNode H2) /表達(dá)式相減/讓系數(shù)變負(fù),代入加法 LNode H3,pre; pre=H2-next; while(pre) pre-coef=-pre-coef; pre=pre-next; H3=AddPolyn(H1,H2); pre=H2-next; while(pre) pre-coef=-pre-coef; pre=pre-next; return H3;【函數(shù)調(diào)用關(guān)系】main()調(diào)用CreatePoly(),PrintPoly(),AddPoly(),scanf()函數(shù)輸入,printf()函數(shù)輸出。4. 運(yùn)行記錄5. 總結(jié)首次做課程設(shè)計(jì)的題目,小激動(dòng),小緊張,編程的基礎(chǔ)比較差,所以把第二章學(xué)習(xí)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2018年稅務(wù)稽查風(fēng)險(xiǎn)防范及企業(yè)應(yīng)對(duì)策略
- 2024年不動(dòng)產(chǎn)登記代理人《地籍調(diào)查》考試題庫(kù)大全(含真題、典型題)
- 2025版民政局婚姻登記中心協(xié)議離婚書(shū)模板電子文檔傳輸合同4篇
- 病蟲(chóng)害與氣候變化的關(guān)聯(lián)性研究
- 二零二五版跨區(qū)域辦事處員工勞動(dòng)合同2篇
- 2025年人才彈性員工派遣合同
- 前臺(tái)聘用合同
- 房地產(chǎn)市場(chǎng)的國(guó)際競(jìng)爭(zhēng)力評(píng)估
- 2025年人員招聘合同
- 2024 年湖南公務(wù)員行測(cè)真題(A 類)
- 2025貴州貴陽(yáng)市屬事業(yè)單位招聘筆試和高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年住院醫(yī)師規(guī)范化培訓(xùn)師資培訓(xùn)理論考試試題
- 期末綜合測(cè)試卷(試題)-2024-2025學(xué)年五年級(jí)上冊(cè)數(shù)學(xué)人教版
- 招標(biāo)采購(gòu)基礎(chǔ)知識(shí)培訓(xùn)
- 2024年廣東省公務(wù)員錄用考試《行測(cè)》試題及答案解析
- 五年級(jí)口算題卡每天100題帶答案
- 結(jié)構(gòu)力學(xué)本構(gòu)模型:斷裂力學(xué)模型:斷裂力學(xué)實(shí)驗(yàn)技術(shù)教程
- 2024年貴州省中考理科綜合試卷(含答案)
- 無(wú)人機(jī)技術(shù)與遙感
- PDCA提高臥床患者踝泵運(yùn)動(dòng)的執(zhí)行率
- 黑色素的合成與美白產(chǎn)品的研究進(jìn)展
評(píng)論
0/150
提交評(píng)論