《數(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頁(yè)珍藏版)》請(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ì)語(yǔ)言已經(jīng)供應(yīng)了多維數(shù)組, 但在某些狀況下, 定義用戶所需的多維數(shù)組也是很有用的。通過(guò)設(shè)計(jì)并模擬實(shí)現(xiàn)整型多維數(shù)組類型,整型多維數(shù)組應(yīng)具有以下基本功能:
(1)定義整型多維數(shù)組類型(以 3 維為例) ,各維的下標(biāo)是任意整數(shù)開(kāi)頭的連續(xù)整數(shù);
(2)下標(biāo)變量賦值,執(zhí)行下標(biāo)范圍檢查;對(duì)輸入的合法下標(biāo),給出數(shù)組元素的值。
(3)同類型數(shù)組賦值;
(4)子數(shù)組賦值,例如,a[1..n]=a[2..n+1] ;
2、 a[2..4][3..5]=b[1..3][2..4];
(5)確定數(shù)組的大小。
三.試驗(yàn)步驟(可選)
具體程序設(shè)計(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;
}Boun
3、di;
typedef struct
{
int dim;
Boundi bound[maxdim];
int total;
int elem[max];
}NArray;
NArray creatone()
{
cout 創(chuàng)建一個(gè)多維數(shù)組 endl;
int 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):end
4、l;
for(i=1;i=A.dim;i++)
{
cout第i維:endl;
cinA.bound[i-1].lower;
cinA.bound[i-1].upper;
A.bound[i-1].boundnum=A.bound[i-1].upper-A.bound[i-1].lower+1;
total=total*A.bound[i-1].boundnum;
}
數(shù)據(jù)結(jié)構(gòu)課程試驗(yàn),設(shè)計(jì)
for(i=0;itotal;i++)
A.elem[i]=0;
cout現(xiàn)在要初始化該數(shù)組
5、的數(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.elem[i];
}
case 0:;
}
cout 數(shù)組創(chuàng)建勝利! endlendl;
return A;
}
int qualify(NArray A,NArray B)
{
6、
int i;
if(B.dim!=A.dim)
{
cout 這兩個(gè)多維數(shù)組不是同類型的,不能相互賦值!endl;
return 0;
}
for(i=0;iA.dim;i++)
{
if(B.bound[i].boundnum!=A.bound[i].boundnum)
{
cout 這兩個(gè)多維數(shù)組不是同類型的,不能相互賦值!endl;
return 0;
}
}
for(i=0;iA.total;i++)
B.elem[i]=A.elem[i];
cout
7、 賦值勝利!endl;
return 0;
}
void printit(NArray A)
{
int i;
cout 這是一個(gè)A.dim維數(shù)組 NArray;
for(i=1;i=A.dim;i++)
{
cout[A.bound[i-1].lower…A.bound[i-1].upper];
}
cout 該數(shù)組中所含元素個(gè)數(shù)為:A.totalendl;
}
//
void find(NArray A)
數(shù)據(jù)結(jié)構(gòu)課程試驗(yàn),設(shè)計(jì)
int i,sum
8、=0,multi=1,j;
int a[maxdim];
cout 請(qǐng)輸入你所要查找的元素的下標(biāo):;
for(i=0;iA.dim;i++) cina[i];
for(i=0;iA.dim;i++)
{
for(j=i+1;jA.dim;j++)multi=multi*A.bound[j].boundnum;
sum=sum+multi;
multi=1;
}
cout 元素 NArray;
for(i=0;iA.dim;i++)
cout[a[i]];
cout 的值為:elem[sum]
9、=A.elem[sum] 找到了對(duì)應(yīng)的目標(biāo)值!endl;
cout 要更改這個(gè)值嗎? Y-1,N-0:;cini;
if(i==1)
{
cout 請(qǐng)輸入替換的值:endl;
cinj;
A.elem[sum]=j;
}
cout 替換后的數(shù)組為:endl;
for(i=0;iA.total;i++)
coutA.elem[i] ;
coutendl;
}
int main()
{
NArray a,b,c;
cout
10、 分別創(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)中消失的問(wèn)題、解決方法和心得體會(huì)
由于數(shù)組運(yùn)算過(guò)程中的最重要的是下標(biāo)之間的轉(zhuǎn)換, 所以要在編程的過(guò)程中留意。