數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)說明書講解_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)說明書講解_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)說明書講解_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)說明書講解_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)說明書講解_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1/1數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)說明書講解安徽理工高校

數(shù)據(jù)結(jié)構(gòu)

課程設(shè)計(jì)說明書題目:一元多項(xiàng)式計(jì)算

院系:計(jì)算機(jī)科學(xué)與工程學(xué)院

專業(yè)班級:數(shù)字媒體13-1班

學(xué)號:2023303102

同學(xué)姓名:錢福琛

指導(dǎo)老師:梁興柱

2023年1月9日

安徽理工高校課程設(shè)計(jì)(論文)任務(wù)書計(jì)算機(jī)科學(xué)與工程學(xué)院

2023年11月10日安徽理工高校課程設(shè)計(jì)(論文)成果評定表

名目

1問題描述

2功能描述

2.1課題要求

2.2軟件格式規(guī)定

3設(shè)計(jì)2

3.1相關(guān)函數(shù)介紹說明

3.2主程序的流程基函數(shù)調(diào)用說明

4程序設(shè)計(jì)4

4.1多項(xiàng)式存儲的實(shí)現(xiàn)

4.2加減乘除算法

4.2.1加法運(yùn)算的實(shí)現(xiàn)

4.2.2減法運(yùn)算的實(shí)現(xiàn)

4.2.3乘法運(yùn)算的實(shí)現(xiàn)

4.2.4除法運(yùn)算的實(shí)現(xiàn)

4.3函數(shù)調(diào)用關(guān)系圖

5運(yùn)行測試

1問題描述

1.1首先是確定結(jié)構(gòu)化程序設(shè)計(jì)的流程圖,利用已學(xué)過的數(shù)據(jù)結(jié)構(gòu)來構(gòu)造二個(gè)存儲多項(xiàng)式的結(jié)構(gòu),接著把輸入,加,減,乘,除運(yùn)算分成四個(gè)主要的模塊:實(shí)現(xiàn)多項(xiàng)式輸入模塊、實(shí)現(xiàn)加法的模塊、實(shí)現(xiàn)減法的模塊、實(shí)現(xiàn)乘法的模塊、實(shí)現(xiàn)除法的模塊.

2功能描述

2.1課題要求

A.支持一元多項(xiàng)式的運(yùn)算器

B.能夠正確輸入并顯示輸入多項(xiàng)式的每一項(xiàng)

C.要求將輸入的多項(xiàng)式F(X),G(X)可進(jìn)行加,減,乘,除運(yùn)算,并顯示結(jié)果

2.2軟件格式規(guī)定

A.輸入的形式:按程序菜單的數(shù)字選擇輸入,并按提示輸入多項(xiàng)式。根據(jù)(系數(shù)指數(shù))的格式進(jìn)行輸入并以輸入(00)作為結(jié)束輸入的掌握。

B.程序所能達(dá)到的功能:能夠進(jìn)行多項(xiàng)式的輸入,顯示,加,減,乘,除運(yùn)算。

C.輸出的形式:根據(jù)多項(xiàng)式的數(shù)學(xué)表達(dá)式的形式輸出,形如:

F(x)=X^2+2X^3-2X^4-3X^3-X^1+10

3設(shè)計(jì)

3.1相關(guān)函數(shù)介紹說明

(1)程序定義的數(shù)據(jù)結(jié)構(gòu)類型為線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)類型變量:

typedefstructlinknode

(2)程序定義的其它函數(shù):

linnode*Sort(linnode*S);

//多項(xiàng)式按指數(shù)從大到小排序

linnode*CreateList;

//創(chuàng)建多項(xiàng)式

VoidShowList(linnode*head);

//顯示多項(xiàng)式

linnode*Copy(linnode*copy);

//拷貝多項(xiàng)式(由于做減法運(yùn)算時(shí)會破壞原來輸入的多項(xiàng)式)linnode*SearchList(linnode*head,intx);

//查找函數(shù)

Linnode*Mulr(linnode*s,linnode*p)

//用一個(gè)節(jié)點(diǎn)去乘與一個(gè)多項(xiàng)式(幫助除法運(yùn)算)

Linnode*AddSame(linnode*head);

//和并多項(xiàng)式的同類項(xiàng)

linnode*Add(linnode*head1,linnode*head2);

//加法

linnode*Mul(linnode*head1,linnode*head2);

//乘法

linnode*Sub(linnode*head1,linnode*head2);

//減法

VoidDiv(linnode*head1,linnode*head2)

//除法

intmain

//主函數(shù)

3.2主程序的流程基函數(shù)調(diào)用說明

(1)主程序的簡要流程圖

圖1主程序流程圖

(2)各程序模塊之間的層次(調(diào)用)關(guān)系

①輸入模塊“CreateList”,首先按提示逐項(xiàng)輸入多項(xiàng)式的每一項(xiàng),當(dāng)接收到“00”時(shí)終止輸入,此時(shí)調(diào)用“Sort”進(jìn)行按指數(shù)降序排列后直接返回多項(xiàng)式的鏈表頭指針。

②加法運(yùn)算模塊“Add”,首先將兩個(gè)多項(xiàng)式連接成一個(gè)多項(xiàng)式,再調(diào)用“AddSame”函數(shù)進(jìn)行合并連接后的多項(xiàng)式的同類項(xiàng)并返回頭指針。

③減法運(yùn)算程序模塊“Sub()”,首先推斷多項(xiàng)式1是否為空,不為空時(shí)調(diào)用“SearchList”進(jìn)行查找操作,查找到的結(jié)果與多項(xiàng)式1作減法后刪除多項(xiàng)式2中查找到的對應(yīng)項(xiàng)。多項(xiàng)式2中剩余的項(xiàng)取反后連接到多項(xiàng)式1的尾部,再調(diào)用“AddSame”進(jìn)行合并同類項(xiàng)操作并返回頭指針。

④乘法運(yùn)算程序模塊“Mul()”,首先推斷輸入的多項(xiàng)式兩個(gè)不為空時(shí)進(jìn)行多項(xiàng)式相乘運(yùn)算,并將結(jié)構(gòu)存儲在新創(chuàng)建的多項(xiàng)式中。再調(diào)用“AddSame”進(jìn)行合并同類項(xiàng)后返回頭指針。

⑥除法運(yùn)算模塊“Div”,首先推斷第一個(gè)多項(xiàng)式的最高次數(shù)大于或等于其次多項(xiàng)式的最高次數(shù),然后再用第一個(gè)多項(xiàng)式的第一項(xiàng)去除于其次個(gè)多項(xiàng)式的第一項(xiàng),所得的商的第一項(xiàng),然后調(diào)用“Mulr”用商的第一項(xiàng)去乘其次個(gè)多項(xiàng)式,用第一個(gè)多項(xiàng)式減去乘得的多項(xiàng)式,所得的差多項(xiàng)式再與其次個(gè)多項(xiàng)式的最高指數(shù)項(xiàng)推斷。直到其次多項(xiàng)式的最高次數(shù)項(xiàng)大于與之推斷的多項(xiàng)式時(shí)結(jié)束運(yùn)算,并調(diào)用“ShowList”輸出相應(yīng)的結(jié)果。

⑥顯示函數(shù)“ShowList”,首先調(diào)用“Sort”進(jìn)行排序,再按格式輸出多項(xiàng)式的每一項(xiàng)。

4程序設(shè)計(jì)

4.1多項(xiàng)式存儲的實(shí)現(xiàn)

多項(xiàng)式是由若干項(xiàng)構(gòu)成的一個(gè)數(shù)學(xué)式子,其每一項(xiàng)包含系數(shù)與指數(shù)。然而我們可以把每一項(xiàng)看成是一個(gè)節(jié)點(diǎn),再由這些節(jié)點(diǎn)連接成多項(xiàng)式。依據(jù)所學(xué)數(shù)據(jù)結(jié)構(gòu),采納線性表的鏈?zhǔn)酱鎯泶鎯Χ囗?xiàng)式的每一個(gè)項(xiàng)的系數(shù)與指數(shù)。其結(jié)構(gòu)為:

4.2加減乘除算法

在多項(xiàng)式運(yùn)算的程序設(shè)計(jì)中,每一部分都會調(diào)用一些其它函數(shù)來幫助完成運(yùn)算(例如:對輸入的多項(xiàng)式進(jìn)行排序,查找,合并等),在這里主要說明加減乘除運(yùn)算的程序設(shè)計(jì),其它函數(shù)的程序設(shè)計(jì)和詳細(xì)調(diào)用關(guān)系請查看程序清單。

4.2.1加法運(yùn)算的實(shí)現(xiàn)

加法計(jì)算還是比較簡單實(shí)現(xiàn)的,將兩個(gè)傳遞過來的多項(xiàng)式鏈表進(jìn)行復(fù)制操作(加法運(yùn)算會破壞原來兩個(gè)鏈表的結(jié)構(gòu)),再將復(fù)制出來的兩鏈表進(jìn)行連接操作,即將第一個(gè)多項(xiàng)式鏈表的尾指針next指向其次個(gè)鏈表的第一個(gè)節(jié)點(diǎn),最終進(jìn)行合并同類項(xiàng)操作。

圖2加法運(yùn)算原理圖

對于加法運(yùn)算我們并不用考慮多項(xiàng)式是否為空的狀況,為空時(shí)連接后合并同類項(xiàng)處理后仍舊返回空的多項(xiàng)式。

4.2.2減法運(yùn)算的實(shí)現(xiàn)

圖3減法運(yùn)算原理圖

4.2.3乘法運(yùn)算的實(shí)現(xiàn)

圖4乘法運(yùn)算原理圖

4.2.4除法運(yùn)算的實(shí)現(xiàn)

圖5除法運(yùn)算原理圖

在程序設(shè)計(jì)時(shí)應(yīng)留意:

由于在輸入多項(xiàng)式的時(shí)候就調(diào)用了Sort函數(shù)進(jìn)行降序排序,因此在除法運(yùn)算時(shí)并不需要從新排序。

4.3函數(shù)調(diào)用關(guān)系圖

此函數(shù)調(diào)用關(guān)系圖主要描述了四則運(yùn)算的實(shí)現(xiàn)、取反及實(shí)現(xiàn)各運(yùn)算所要調(diào)用的函數(shù),詳情還請看程序清單。圖6函數(shù)調(diào)用關(guān)系圖

5運(yùn)行測試

圖7主界面效果圖

main選擇菜單

Add加法運(yùn)算Sub減法運(yùn)算Mul乘法運(yùn)算Copy備份

CreateList創(chuàng)建Sort排序AddSame合并

AddSame合并

SearchList搜尋節(jié)點(diǎn)

Copy備份AddSame合并Div除法運(yùn)算

Mulr

Negate取反

AddSame合并ShowList顯示輸出

Sort排序

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論