數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)多維數(shù)組_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)多維數(shù)組_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)多維數(shù)組_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)多維數(shù)組_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)多維數(shù)組_第5頁(yè)
已閱讀5頁(yè),還剩14頁(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)介

1、家x匚六,號(hào)秦皇島分校NorthEastern University At QinHuangDao數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)多維數(shù)組班級(jí)學(xué)號(hào) 學(xué)生姓名 提交日期2017年1月12日成 績(jī) 計(jì)算機(jī)與通信工程學(xué)院目錄第一部分需求分析1.1 程序設(shè)計(jì)的任務(wù) 21.2 程序達(dá)到的功能 21.3 程序功能模塊圖和流程圖 21.4 測(cè)試數(shù)據(jù) 3第二部分詳細(xì)設(shè)計(jì)2.1 用到的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)定義 42.2 各個(gè)函數(shù)的基本操作和功能 42.3 各個(gè)函數(shù)的調(diào)用關(guān)系 52.4 主程序思路 5第三部分調(diào)試分析3.1 遇到的問(wèn)題及解決過(guò)程 63.2 設(shè)計(jì)過(guò)程中學(xué)到的知識(shí) 73.3 經(jīng)驗(yàn)與體會(huì) 7第四部分用戶手冊(cè)4.1 每一步

2、驟的注釋說(shuō)明 74.2 整體思路 7第五部分測(cè)試結(jié)果5.1 測(cè)試結(jié)果 85.2 附錄-程序源碼 9第一部分需求分析1.1 程序設(shè)計(jì)的任務(wù)1.1.1 問(wèn)題描述設(shè)計(jì)并模擬實(shí)現(xiàn)整型多維數(shù)組類型1.1.2 基本要求 設(shè)計(jì)并模擬實(shí)現(xiàn)多維數(shù)組類型。整型多維數(shù)組應(yīng)具有以下基本功能:(1) 定義整型多維數(shù)組類型,各維的下標(biāo)是任意整數(shù)開(kāi)始的連續(xù)整數(shù)(2) 下標(biāo)變量賦值,執(zhí)行下標(biāo)范圍檢查。(3) 同類型數(shù)組賦值。(4) 子數(shù)組賦值,例如,a1.n=a 2.n+1;a2.43.5=b1.32.4(5) 確定數(shù)組的大小。1.1.3選作內(nèi)容(1) 各維的下標(biāo)是任意字符開(kāi)始的連續(xù)字符。(2) 數(shù)組初始化。(3) 可修改數(shù)

3、組的下標(biāo)范圍。1.2 程序達(dá)到的功能(1) 定義整型多維數(shù)組結(jié)構(gòu)體,并定義各維的的結(jié)構(gòu)體。(2) 下標(biāo)變量賦值。(3) 同類型數(shù)組賦值,不同類型賦值時(shí)檢查出錯(cuò)誤。(4) 子數(shù)組賦值,例如 a1.n=a 2.n+1;a2.43.5=b1.32.4(5) 確定數(shù)組的大小。(6) 數(shù)組初始化。(7) 可修改數(shù)組的下標(biāo)。1.3 程序功能模塊圖和流程圖定義結(jié)柢創(chuàng)建并初二多維數(shù)”一修改數(shù)勢(shì)口查找替名上 體類型T始化數(shù)線T賦值函戮T下標(biāo)函婁口 函數(shù) T體類型始化數(shù)組賦值函數(shù)下標(biāo)函數(shù)輸出函數(shù)14 / 16圖1程序功能模塊圖圖2.程序流程圖1.4 測(cè)試數(shù)據(jù)多維數(shù)組 a:三維;下標(biāo)1*22*33*5;賦值:1 2

4、 3 4 5 6 7 8 9 1011 12多維數(shù)組b:兩維;下標(biāo)1*22*3;賦值:1 2 3 4多維數(shù)組 c;三維;下標(biāo)2*33*44*6;賦值:2 3 4 5 6 7 8 9 10 1112查找下標(biāo):a234,a135;替換值為原數(shù)值的復(fù)制,例如 6改為66修改第2維的下標(biāo),保證原來(lái)數(shù)組個(gè)數(shù)不變第二部分詳細(xì)設(shè)計(jì)2.1 用到的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)定義2.1.1 第幾維數(shù)組的結(jié)構(gòu)體定義typedef structElemType lower; / 定義每維數(shù)組的下界ElemType upper; / 定義每維數(shù)組的上界int boundnum; /定義每維數(shù)組中元素的個(gè)數(shù)Boundi; / 定

5、義第i維數(shù)組2.1.2 多維數(shù)組結(jié)構(gòu)體的定義typedef structint dim; /定義多維數(shù)組的維數(shù)Boundi boundMAXDIM; / 定義第 i 維數(shù)組int total; /定義數(shù)組中元素的個(gè)數(shù)int elemMAXTOTAL; / 數(shù)組中每個(gè)元素的地址,其中elem0為該多維數(shù)組的基址NArray;/定義多維數(shù)組2.2 各個(gè)函數(shù)的基本操作及功能2.2.1 NArray CreatArray() ;多維數(shù)組創(chuàng)建并初始化函數(shù)2.2.2 int Replace(NArray &A,NArray &B);兩個(gè)數(shù)組復(fù)制的函數(shù)2.2.3 void AdjustBound(NArra

6、y &A);修改下標(biāo)的函數(shù)2.2.4 void FindSwap(NArray &A);查找并替換的函數(shù)2.2.5 void PrintArray(NArray A) ;打印輸出函數(shù)2.2.6 int main(); 主函數(shù)8 Eftruchf13田 typ穹def 21E M&rray CrRalAinzvy。“e 建一、翠姿數(shù)經(jīng)要飛“好比5S59 E int HepIvcelNA廣ray效乏皆花鑾137g田汨七thildAsS說(shuō)門(mén)。141州,SAint h) 子數(shù)組賦值函教m為要賦值的雉數(shù)97%田 gid MjustBoiiridaiMF” 如)( ”螺改數(shù)函的下標(biāo)109 ffl 廿tid

7、 Find5ap(NApgy &啟)( “查找苦圾費(fèi)數(shù)136蓊田void PrintArr3y(HMray A( .“恁攜空氐與關(guān)埠入?皮150151 IB int 圖3.程序子函數(shù)主函數(shù)截圖2.3各個(gè)函數(shù)之間的調(diào)用關(guān)系圖4.各個(gè)函數(shù)之間的調(diào)用關(guān)系2.4主程序思路圖5.主程序思路流程圖第三部分調(diào)試分析3.1 遇到的問(wèn)題及解決過(guò)程3.1.1、 在replace函數(shù)(即數(shù)組替換函數(shù))中,當(dāng)執(zhí)行替換循環(huán)時(shí),代碼如下:for(i=0;iA.total;i+)B.elemi=A.elemi; /把多維數(shù)組A賦值給Bcout*賦值成功 *endi;return 0;把return 0;放到了 for循環(huán)里

8、了。結(jié)果只a數(shù)組中只把第一個(gè)元素賦值給了c數(shù)組里,其他的元素仍沒(méi)有替換。3.1.2、 在findswap函數(shù)中,給定數(shù)組下標(biāo)求地址映像時(shí)遇到了困難,原因還是由二維數(shù)組類比到三維數(shù)組及多維數(shù)組出現(xiàn)了問(wèn)題。三維數(shù)組可以想象成空間的數(shù)組,又由于C+中按行存儲(chǔ),所以舉了個(gè)例子: A223的三維數(shù)組,求A221 的地址,2 3 (2-1)+3(2-1)+1=10。公式為書(shū)上的公式:LOC(j1,j2,*,jn尸LOC(0,0,*,0)+(b2* bn j1+b3 * bn j2+*+bn jn-1+jn)L 。其中n維數(shù)組的映像函數(shù)。bn代表第i維數(shù)組元素的個(gè)數(shù)。可縮寫(xiě)成LOC(j1,j2,*,jn)=

9、LOC(0,0, * , 0)+。3.2 設(shè)計(jì)過(guò)程中學(xué)到的小知識(shí)3.2.1、 當(dāng)輸出結(jié)果中想調(diào)用數(shù)據(jù)時(shí),即既想有輸出的原文字又有想調(diào)用的數(shù)據(jù) 時(shí)。可以用 將想調(diào)用的部分給包含起來(lái)。我也是在網(wǎng)上搜集資料偶然發(fā) 現(xiàn)的。具體例子就是輸出函數(shù) PrintArray 中的輸出部分。如下截圖中劃線的部 分:137E1 void(NArray A)13813914a El141142 -143114145白14 b147148143int i,j;eutE這是一個(gè)維數(shù)組MAreyTor .dim;i+)(cQut.bcundi*lLower.bcund|i-lupper(jautN,詼數(shù)組的元素的個(gè)數(shù)為:”

10、coLitendl j-far 1 i=白 j LA . totaLj 1+)(3.3 經(jīng)驗(yàn)與體會(huì)經(jīng)過(guò)這次課設(shè)我意識(shí)到雖然數(shù)據(jù)結(jié)構(gòu)課程已經(jīng)結(jié)束,但是數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)還 遠(yuǎn)遠(yuǎn)沒(méi)有結(jié)束,作為計(jì)算機(jī)專業(yè)的學(xué)生,應(yīng)當(dāng)學(xué)好數(shù)據(jù)結(jié)構(gòu)的知識(shí)點(diǎn),把專業(yè)知 識(shí)打牢。同時(shí)應(yīng)當(dāng)動(dòng)手做一些程序設(shè)計(jì)的習(xí)題, 雖然剛上手的時(shí)候有點(diǎn)難,只要 肯鉆研下去,到問(wèn)題解決的時(shí)候覺(jué)得自己收獲還是挺大的。 同時(shí)也是為了鞏固自 己數(shù)據(jù)結(jié)構(gòu)的實(shí)習(xí)。我以后還會(huì)挑一些題做的。第四部分、用戶手冊(cè)4.1 每一步驟的注釋說(shuō)明注釋說(shuō)明已包含在源程序中,請(qǐng)?jiān)斠?jiàn)附錄中的程序代碼,在此不再贅述。4.2 整體思路我實(shí)現(xiàn)程序的功能的時(shí)候是把要求分成了幾個(gè)功能函數(shù)

11、,然后逐一的通過(guò)主函數(shù)調(diào)用功能函數(shù),來(lái)判別自己的功能函數(shù)是否正確,而不是從前寫(xiě)到后一下寫(xiě) 完的。我覺(jué)得一個(gè)功能一個(gè)功能的實(shí)現(xiàn)更簡(jiǎn)單些,而且出錯(cuò)了容易查錯(cuò)。具體思 路在前面都已經(jīng)描述,在此不再贅述。第五部分、測(cè)試結(jié)果5.1 測(cè)試結(jié)果截圖1 C:L 4erCkto pUinftitfed2 君乂婦請(qǐng)揄久要?jiǎng)?chuàng)屬數(shù)組的不救T 3清輸入耳箝若用的I下界工清和入第二的組明二不.出1 2聲輸入第2鑼組的二下扉,2 3清輸入第工凈敬祖的二F界:a 5是否琵初始化武組TT-L1H); 1清以行一福人1泠元素L 2 3 4 5 01甘 g 10 1: 12rt=+*Tii,建多姓菽當(dāng)上也t旭是一N轍組MHray

12、口班3閭蟋且住元素的個(gè)數(shù)為:L2數(shù)組沏I. 33456789 10 11 12清輸入要?jiǎng)?chuàng)建我組的維蟻2清格人母斑妁犯汴_卜界工點(diǎn)輸入第二更其割由工,界,L 2清輸久第2維數(shù)犯的上F界,2 K是否要物始化敷相? T-LN-Q: 1清出if子輸入H元更12 3 4*也!建字推戴坦成或*I*這是 個(gè)母歙組加1;八卜”3旬組的元索的斤鼓為=4 蝌且以12 3 4a C:Usafr&lyTTi (.Desldci pUntiilq ci2, ews這是一闔1擰三Act封1,,可L 談野I盤(pán)的元素的可用 力;j 2 3 4臬云至春搔數(shù)始是T否如1卜*1烹故兩個(gè)數(shù)組不是閆個(gè)型的*數(shù)嵬為:這是T蠡畋組JIAr

13、rw 1-2 2即該數(shù)蛆的元索的個(gè)數(shù)為I的贛人賽創(chuàng)建數(shù)第的懶如3 請(qǐng)輸入每線數(shù)組的上下界 請(qǐng)箍、第。首數(shù)期的二下單.2 情輸.人第二自數(shù)組的上下界,3 4請(qǐng)輸入第濰藪出的_L下界.16是由共初始Z數(shù)組? J1/T: 1if以叮存輔入1E個(gè)兀素2 3 4 5 6 7 8 9 10 11 12 13*4#=行創(chuàng)建多辨健目啟功TM:我是一個(gè)等芭明HkT”乏幻卜Fl46謙效組的元素的個(gè)苗為工12數(shù)組力工2 3 4 5 6 7 8 9 10 11 12 13易否苣替換數(shù)組?是-1否Y: 1*v+k+* 時(shí)宿成O4tv4t*這是一汽維勃邪*7卜4十節(jié)該起組的元素的個(gè)嵌為1 12 煎蛆為t1 2 3 4 5

14、 6 7 8 9 10 11 12清輸入侏再有找住元素度下標(biāo),2 W 4數(shù)組岫rrsy口3 4的值方:曰口m LOk口 加百目標(biāo)值想蜚政變這個(gè)廿標(biāo)值嗎? Y-L N-0i 1請(qǐng)誦人普換屆1111音換后的數(shù)如為.123456739 1U 1111 12 C;U serslymDesktopU n:itled2, exe督聘后的數(shù)組為:1 2 3 4 5 66 7 E 9 10 1111 12想要修茂第匚維的上下界,請(qǐng)輸入;2請(qǐng)輸入修改后的上下界:2 4修改后的第濰元素的個(gè)數(shù)為:2這是一個(gè)濰數(shù)組NAr皿1-2口5該數(shù)組的元素的個(gè)數(shù)為:12 數(shù)蛆為: 12345 &6 789 10 1111 12P

15、rocess exi ted ft.er 130. 3 seconds wi th return value 0 請(qǐng)按任意鍵繼續(xù).5.2程序源碼#include using namespace std;# define MAXDIM 5 / 定義數(shù)組的最大維數(shù)# define MAXNUM 10 / 定義每維數(shù)組的最大個(gè)數(shù)# define MAXTOTAL 100 /定義數(shù)組元素的最大個(gè)數(shù) typedef int ElemType;typedef structElemType lower; / 定義每維數(shù)組的下界ElemType upper; / 定義每維數(shù)組的上界int boundnum;/

16、定義每維數(shù)組中元素的個(gè)數(shù)Boundi;/定義第i維數(shù)組typedef structint dim;/定義多維數(shù)組的維數(shù)Boundi boundMAXDIM; /定義第i維數(shù)組int total;/定義數(shù)組中元素的個(gè)數(shù)int elemMAXTOTAL;/數(shù)組中每個(gè)元素的地址,其中elem0為該多維數(shù)組的基址NArray;/定義多維數(shù)組NArray CreatArray() /創(chuàng)建一個(gè)多維數(shù)組并初始化int total=1;int n,i,j;NArray A;/定義多維數(shù)組Acoutn;if(n5)cout超過(guò)數(shù)組的維數(shù)上限請(qǐng)重新輸入:n;A.dim=n;cout請(qǐng)輸入每維數(shù)組的上下界:endl

17、;for(i=1;i=A.dim;i+)cout請(qǐng)輸入第iA.boundi-1.lower;coutA.boundi-1.upper;A.boundi-1.boundnum=A.boundi-1.upper-A.boundi-1.lower+1;total=total*A.boundi-1.boundnum;A.total=total; / 統(tǒng)計(jì)出來(lái)數(shù)組中元素的個(gè)數(shù)for(i=0;itotal;i+)A.elemi=0;coutj;switch(j)case 1:cout”請(qǐng)以行序輸入A.total個(gè)元素endl;for(i=0;iA.elemi;/輸入多維數(shù)組的元素case 0:;/不執(zhí)行操

18、作,創(chuàng)建一個(gè)全為 0的多維數(shù)組cout*創(chuàng)建多維數(shù)組成功 * endl;return A;int Replace(NArray &A,NArray &B) /數(shù)組替換函數(shù)int i;if(A.dim!=B.dim)cout*這兩個(gè)數(shù)組不是同類型的*endl; / 判斷兩個(gè)數(shù)組的維數(shù)是否相同return 0;for(i=1;i=A.dim;i+)if(A.boundi-1.boundnum!=B.boundi-1.boundnum)cout*這兩個(gè)數(shù)組不是同類型的*endi; / 判斷兩個(gè)數(shù)組各維的元素的個(gè)數(shù)是否相同return 0;for(i=0;iA.total;i+)B.elemi=A.e

19、lemi; / 把多維數(shù)組A賦值給Bcout*賦值成功 *endl;return 0;void AdjustBound(NArray &A) /修改數(shù)組的下標(biāo)int n;coutn;coutA.boundn-1.lower;cinA.boundn-1.upper;A.boundn-1.boundnum=A.boundn-1.upper-A.boundn-1.lower+1;cout修改后的第n維元素的個(gè)數(shù)為:A.boundn-1.boundnumendl;void FindSwap(NArray &A) /查找替換函數(shù)int i,temptotal=1,sum=0,j;int aMAXDIM;

20、cout請(qǐng)輸入你所查找的元素的下標(biāo):;for(i=0;iai;for(i=0;iA.dim;i+)temptotal=ai-A.boundi.lower;/給定數(shù)組下標(biāo)的求映像地址的計(jì)算公式。舉個(gè)例子A223的三維數(shù)組,求A221的地址,2*3*(2-1)+3*(2-1)+1=10 公式為書(shū)上的公式for(j=i+1;jA.dim;j+)temptotal=temptotal*A.boundj.boundnum;sum=sum+temptotal;cout數(shù)組 NArray;for(i=0;iA.dim;i+)coutai;cout的值為:elemsum=A.elemsum 找到了 目標(biāo)值 endl;couti;if(i=1)cout請(qǐng)輸入替換

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論