《數(shù)據(jù)結(jié)構(gòu)上機(jī)實(shí)驗(yàn)報(bào)告9》由會(huì)員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)結(jié)構(gòu)上機(jī)實(shí)驗(yàn)報(bào)告9(9頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、數(shù)據(jù)結(jié)構(gòu)上機(jī)實(shí)驗(yàn)報(bào)告9 數(shù)據(jù)結(jié)構(gòu)課程試驗(yàn),設(shè)計(jì) 一試驗(yàn)?zāi)康?設(shè)計(jì)并模擬實(shí)現(xiàn)整型多維數(shù)組類型。 二試驗(yàn)內(nèi)容 盡管 C 程序設(shè)計(jì)語言已經(jīng)供應(yīng)了多維數(shù)組, 但在某些狀況下, 定義用戶所需的多維數(shù)組也是很有用的。通過設(shè)計(jì)并模擬實(shí)現(xiàn)整型多維數(shù)組類型,整型多維數(shù)組應(yīng)具有以下基本功能: (1)定義整型多維數(shù)組類型(以 3 維為例) ,各維的下標(biāo)是任意整數(shù)開頭的連續(xù)整數(shù); (2)下標(biāo)變量賦值,執(zhí)行下標(biāo)范圍檢查;對(duì)輸入的合法下標(biāo),給出數(shù)組元素的值。 (3)同類型數(shù)組賦值; (4)子數(shù)組賦值,例如,a1.n=a2.n+1 ; a2.43.5=b1.32.4; (5)確定數(shù)組的大小。 三試驗(yàn)步驟(可選) 具體程序設(shè)
2、計(jì): #includeiostream using namespace std; #define maxdim 3 #define maxnum 10 #define max 100 typedef int ElemType; typedef struct ElemType lower; ElemType upper; int boundnum; Boundi; typedef struct int dim; Boundi boundmaxdim; int total; int elemmax; NArray; NArray creatone() cout 創(chuàng)建一個(gè)多維數(shù)組 endl; int
3、 n,i,total=1,j; NArray A; cout請(qǐng)輸入要?jiǎng)?chuàng)建數(shù)組的維數(shù):;cinn; A.dim=n; cout請(qǐng)輸入所創(chuàng)建數(shù)組的各維的上下標(biāo):endl; for(i=1;i=A.dim;i+) cout第i維:endl; cinA.boundi-1.lower; cinA.boundi-1.upper; A.boundi-1.boundnum=A.boundi-1.upper-A.boundi-1.lower+1; total=total*A.boundi-1.boundnum; 數(shù)據(jù)結(jié)構(gòu)課程試驗(yàn),設(shè)計(jì) for(i=0;itotal;i+) A.elemi=0; cout現(xiàn)在要初
4、始化該數(shù)組的數(shù)值部分嗎?Y-1,N(此時(shí)數(shù)組中各元素均為 0)-0 ; cinj; switch(j) case 1: cout 請(qǐng)以行序?yàn)橹餍蜉斎朐摱嗑S數(shù)組的A.total 個(gè)元素:endl; for(i=0;itotal;i+) cinA.elemi; case 0:; cout 數(shù)組創(chuàng)建勝利! endlendl; return A; int qualify(NArray A,NArray B) int i; if(B.dim!=A.dim) cout 這兩個(gè)多維數(shù)組不是同類型的,不能相互賦值!endl; return 0; for(i=0;iA.dim;i+) if(B.boundi.b
5、oundnum!=A.boundi.boundnum) cout 這兩個(gè)多維數(shù)組不是同類型的,不能相互賦值!endl; return 0; for(i=0;iA.total;i+) B.elemi=A.elemi; cout 賦值勝利!endl; return 0; void printit(NArray A) int i; cout 這是一個(gè)A.dim維數(shù)組 NArray; for(i=1;i=A.dim;i+) coutA.boundi-1.lowerA.boundi-1.upper; cout 該數(shù)組中所含元素個(gè)數(shù)為:A.totalendl; / void find(NArray A)
6、數(shù)據(jù)結(jié)構(gòu)課程試驗(yàn),設(shè)計(jì) int i,sum=0,multi=1,j; int amaxdim; cout 請(qǐng)輸入你所要查找的元素的下標(biāo):; for(i=0;iA.dim;i+) cinai; for(i=0;iA.dim;i+) for(j=i+1;jA.dim;j+)multi=multi*A.boundj.boundnum; sum=sum+multi; multi=1; cout 元素 NArray; for(i=0;iA.dim;i+) coutai; cout 的值為:elemsum=A.elemsum 找到了對(duì)應(yīng)的目標(biāo)值!endl; cout 要更改這個(gè)值嗎? Y-1,N-0:;c
7、ini; if(i=1) cout 請(qǐng)輸入替換的值:endl; cinj; A.elemsum=j; cout 替換后的數(shù)組為:endl; for(i=0;iA.total;i+) coutA.elemi ; coutendl; int main() NArray a,b,c; cout 分別創(chuàng)建三個(gè)多維數(shù)組如下: endlendl; a=creatone(); b=creatone(); c=creatone(); cout 創(chuàng)建的這三個(gè)數(shù)組的有關(guān)信息如下:endl; cout 多維數(shù)組 a:; printit(a); cout 多維數(shù)組 b:; printit(b); cout 多維數(shù)組 c:; printit(c); coutendl數(shù)組之間相互賦值的結(jié)果如下:endl; cout 將多維數(shù)組 a 的值賦給多維數(shù)組 b ; qualify(a,b); cout 將多維數(shù)組 a 的值賦給多維數(shù)組 c ; qualify(a,c); coutendl隨機(jī)存取數(shù)組中的指定元素:endl; find(a); return 0; 數(shù)據(jù)結(jié)構(gòu)課程試驗(yàn),設(shè)計(jì) 四試驗(yàn)的結(jié)果及分析。 試驗(yàn)輸出值滿足預(yù)期。 五試驗(yàn)中消失的問題、解決方法和心得體會(huì) 由于數(shù)組運(yùn)算過程中的最重要的是下標(biāo)之間的轉(zhuǎn)換, 所以要在編程的過程中留意。