版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課程設計報告1. 需求分析【問題描述】設計一個一元稀疏多項式簡單計算器.【基本要求】一元稀疏多項式基本功能包括:1) 輸入并建立多項式;2) 輸出多項式,輸出形式為整數序列:n, c1, e1, c2, e2, , cn, en,其中n是多項式的項數,ci和ei分別是第i項的系數和指數,序列按指數降序排列;3) 多項式a和b相加,建立多項式a+b;4) 多項式a和b相減,建立多項式a-b;【測試數據】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) 互換上述測試數據中的前后兩個多項式.2. 概要設計ADT Polynomial數據對象: D=ai|aiÎTermSet, i=1,2,m,m0,TermSet中的每個元素包含一個表示系數的實數和表示指數的整數數據對象: R1=<ai,ai-1>|ai,ai-1ÎD,且ai-1中
3、的指數值小于ai中的指數,i=2,m基本操作:CreatePolyn(void)Result: 指數由大到小輸入m項的系數和指數,建立一元多項式pPrintPoly (LNode Head)Result: 輸出一元多項式AddPoly (LNode H1,LNode H2) Condition: 一元多項式pa,pb已存在Result: 完成多項式相加運算,即pa=pa+pb,并銷毀一元多項式pb.SubtractPoly (LNode H1,LNode H2)Condition: 一元多項式pa,pb已存在Result: 完成多項式相減運算,即pa=pa-pb,并銷毀一元多項式pb.ADT
4、Polynomial3. 詳細設計【數據類型定義】typedef struct node int expn,coef; struct node *next;Nodetype,*LNode; /定義結點類型【函數原型定義】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)建表達式 LNode Head,p,pre,p
5、ree; int x,z; Head=(LNode)malloc(sizeof(Nodetype); Head->next=NULL; printf("當你輸入的系數為0時,輸入將結束!n"); printf("請輸入第一項系數:"); 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("請輸
6、入指數:"); scanf("%d",&z); p=(LNode)malloc(sizeof(Nodetype); p->coef=x; p->expn=z; pre=Head; while(pre->next&&pre->next->expn>=z)/原有項指數大于插入項 pree=pre; pre=pre->next; p->next=pre->next;/插入項 pre->next=p; if(pre->expn=p->expn)/原有項指數等于插入項 pre-&
7、gt;coef+=p->coef; pre->next=p->next; free(p); if(pre->coef=0)/系數為0 pree->next=pre->next; free(pre); printf("請輸入系數:"); scanf("%d",&x); if(Head->next=NULL)/多項式空 pre=(LNode)malloc(sizeof(LNode); pre->coef=0; pre->expn=0; pre->next=Head->next; Hea
8、d->next=pre; return Head;PrintPolyn()void PrintPolyn(LNode Head) /輸出表達式 LNode pre; pre=Head->next; if(pre->expn=0)/指數為0 printf("%d",pre->coef); else printf("%d*X(%d)",pre->coef,pre->expn); pre=pre->next; while(pre)/系數不為0 if(pre->expn=0)/指數為0 if(pre->coe
9、f>0) printf("+%d",pre->coef); else if(pre->coef<0) printf("%d",pre->coef); else/指數不為0 if(pre->coef>0) printf("+%d*X(%d)",pre->coef,pre->expn); else if(pre->coef<0) printf("%d*X(%d)",pre->coef,pre->expn); pre=pre->next;
10、/遍歷每一項 printf("n");AddPolyn()LNode AddPolyn(LNode H1,LNode H2) /表達式相加 LNode H3,p1,p2,p3,pre;/p1第一個多項式的項,pre p的前一項 H3=(LNode)malloc(sizeof(LNode); H3->next=NULL; /建立一個空的多項式 p1=H1->next; /第一個多項式的第一項 p2=H2->next; pre=H3; / while(p1&&p2) if(p1->expn>p2->expn)/第一個多項式的項
11、的指數大于第二個的 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->expn<p2->expn)/第一個多項式的項的指數小于第二個的 p3=(LNode)malloc(sizeof(LNode); p3->expn=p2->expn; p3->coef=p2->coef; p3-&g
12、t;next=pre->next; pre->next=p3; pre=p3; p2=p2->next; else if(p1->coef+p2->coef!=0)/相加為不0,指數相同系數相加 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
13、p1=p1->next; p2=p2->next; 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-&
14、gt;next; pre->next=p3; pre=p3; p1=p1->next; return H3;Substract()LNode SubstractPolyn(LNode H1,LNode H2) /表達式相減/讓系數變負,代入加法 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;【函數調用關系】main()調用CreatePoly(),PrintPoly(),AddPoly(),scanf()函數輸入,printf()函數輸出。4. 運行記錄5. 總
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年農業(yè)檢測能力驗證合同
- 交通運輸部所屬事業(yè)單位2026年度第三批統(tǒng)一公開招聘備考題庫及一套答案詳解
- 2025年臺州學院編制外合同工招聘備考題庫及參考答案詳解一套
- 2025年茂名市電白區(qū)電城中學招聘合同制教師備考題庫帶答案詳解
- 國家知識產權局專利局專利審查協作廣東中心2026年度專利審查員公開招聘備考題庫及一套完整答案詳解
- 2025年杭州高新區(qū)(濱江)綜合行政執(zhí)法局招聘協管員備考題庫及答案詳解參考
- web項目論壇課程設計
- 《AQ 2031-2011金屬非金屬地下礦山監(jiān)測監(jiān)控系統(tǒng)建設規(guī)范》專題研究報告
- 2025西藏日喀則市第二中等職業(yè)技術學校招聘編外人員8人考試核心題庫及答案解析
- 2025年消費電子柔性電路用銅箔市場報告
- 學校領導班子年終工作總結
- 水利信息化水情監(jiān)測系統(tǒng)單元工程質量驗收評定表、檢查記錄
- 電驅動石油深井鉆機相關項目投資計劃書范本
- 車位轉讓車位協議書模板
- 中國融通地產社招筆試
- DLT 572-2021 電力變壓器運行規(guī)程
- DL∕T 1430-2015 變電設備在線監(jiān)測系統(tǒng)技術導則
- 國家開放大學電大《11876國際私法》期末終考題庫及答案
- 員工下班喝酒意外免責協議書
- 光動力療法治愈牙周潰瘍探討
- 2024年載貨汽車項目營銷策劃方案
評論
0/150
提交評論