![【C語(yǔ)言《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告】稀疏矩陣運(yùn)算的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-8/25/ac80eb6f-ccde-41b8-afca-863404a97166/ac80eb6f-ccde-41b8-afca-863404a971661.gif)
![【C語(yǔ)言《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告】稀疏矩陣運(yùn)算的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-8/25/ac80eb6f-ccde-41b8-afca-863404a97166/ac80eb6f-ccde-41b8-afca-863404a971662.gif)
![【C語(yǔ)言《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告】稀疏矩陣運(yùn)算的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-8/25/ac80eb6f-ccde-41b8-afca-863404a97166/ac80eb6f-ccde-41b8-afca-863404a971663.gif)
![【C語(yǔ)言《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告】稀疏矩陣運(yùn)算的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-8/25/ac80eb6f-ccde-41b8-afca-863404a97166/ac80eb6f-ccde-41b8-afca-863404a971664.gif)
![【C語(yǔ)言《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告】稀疏矩陣運(yùn)算的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-8/25/ac80eb6f-ccde-41b8-afca-863404a97166/ac80eb6f-ccde-41b8-afca-863404a971665.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、更多課程設(shè)計(jì)、論文、畢業(yè)設(shè)計(jì)請(qǐng)?jiān)L問(wèn):數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)題目: 稀疏矩陣運(yùn)算器問(wèn)題描述:有輸入界面(圖形或文字界面都可),能區(qū)分加法和轉(zhuǎn)置;能處理任意輸入的典型數(shù)據(jù)和進(jìn)行出錯(cuò)數(shù)據(jù)處理(例如加法,當(dāng)?shù)谝粋€(gè)矩陣和第二個(gè)矩陣的行數(shù)和列數(shù)不相等時(shí),不能運(yùn)算);必須采用三元組作存儲(chǔ)結(jié)構(gòu),不能采用數(shù)組等形式;輸出要求用矩陣的形式輸出(即習(xí)題集136頁(yè)的形式)。實(shí)驗(yàn)?zāi)康模菏褂萌M實(shí)現(xiàn)稀疏矩陣的運(yùn)算實(shí)驗(yàn)內(nèi)容:寫(xiě)出程序并上機(jī)調(diào)試、通過(guò)。一、需求分析1、演示程序以用戶(hù)和計(jì)算機(jī)的對(duì)話(huà)方式執(zhí)行,即在計(jì)算機(jī)終端上顯示*矩陣的加法和轉(zhuǎn)制運(yùn)算器*1、稀疏矩陣的加法2、稀疏矩陣的轉(zhuǎn)置輸入要進(jìn)行的項(xiàng)目的編號(hào): 時(shí)輸入要進(jìn)行的
2、運(yùn)算對(duì)應(yīng)的數(shù)字。當(dāng)出現(xiàn)“請(qǐng)輸入矩陣的行數(shù)、列數(shù)和非零元個(gè)數(shù)(以空格隔開(kāi)):”時(shí)輸入矩陣的行數(shù)、列數(shù)和非零元素個(gè)數(shù)。當(dāng)出現(xiàn)“請(qǐng)用三元組形式輸入矩陣的元素(行 列 非零元素):”時(shí)輸入矩陣中的所有非零元素的位置和值,這時(shí)將出現(xiàn)由輸入的因素所生成的矩陣a。若在輸入項(xiàng)目標(biāo)號(hào)時(shí)輸入的是1,接著會(huì)出現(xiàn)“請(qǐng)輸入矩陣的行數(shù)、列數(shù)和非零元個(gè)數(shù)(以空格隔開(kāi)):”,這時(shí)輸入另一個(gè)矩陣的行數(shù)、列數(shù)和非零元素個(gè)數(shù)。當(dāng)出現(xiàn)“請(qǐng)用三元組形式輸入矩陣的元素(行 列 非零元素):”時(shí)輸入另一個(gè)矩陣中的所有非零元素的位置和值。這時(shí)將會(huì)生成矩陣b和矩陣a+b若在輸入項(xiàng)目標(biāo)號(hào)時(shí)輸入的是2,在出現(xiàn)矩陣a后會(huì)出現(xiàn)a的轉(zhuǎn)置矩陣。3、程序的
3、執(zhí)行包括:(1)構(gòu)造三元組順序表存儲(chǔ)非零元的位置和值;(2)輸入要進(jìn)行的項(xiàng)目的編號(hào);(3)生成矩陣a;(4)輸出矩陣a;(5)判斷要進(jìn)行的運(yùn)算。若為1,生成矩陣b并輸出矩陣b和矩陣a+b;若為2,輸出矩陣;(6)銷(xiāo)毀矩陣;(7)結(jié)束4、本實(shí)驗(yàn)做一個(gè)類(lèi)似于運(yùn)算器的程序,實(shí)現(xiàn)矩陣的轉(zhuǎn)置和加法運(yùn)算,5、輸入及輸出示例:*矩陣的加法和轉(zhuǎn)制運(yùn)算器*1、稀疏矩陣的加法2、稀疏矩陣的轉(zhuǎn)置輸入要進(jìn)行的項(xiàng)目的編號(hào): 1請(qǐng)輸入矩陣的行數(shù)、列數(shù)和非零元個(gè)數(shù)(以空格隔開(kāi)):5 5 2請(qǐng)用三元組形式輸入矩陣的元素(行 列 非零元素):1 2 63 5 19矩陣a:0 6 0 0 00 0 0 0 00 0 0 0 19
4、0 0 0 0 00 0 0 0 0 請(qǐng)輸入矩陣的行數(shù)、列數(shù)和非零元個(gè)數(shù)(以空格隔開(kāi)):5 5 51 1 31 5 92 3 83 4 113 5 6 矩陣b:3 0 0 0 90 0 8 0 00 0 0 11 60 0 0 0 0 0 0 0 0 0 a+b:3 6 0 0 90 0 8 0 0 0 0 0 11 250 0 0 0 0 0 0 0 0 0二 概要設(shè)計(jì)1基本操作本程序中,用三元組順序表作為存儲(chǔ)結(jié)構(gòu)。(1)、creat(tsmatrix &m)操作結(jié)果:創(chuàng)建矩陣m。(2)、addsmatrix(tsmatrix a,tsmatrix b,tsmatrix &c,int n)初
5、始條件:矩陣a和b的行數(shù)和列數(shù)對(duì)應(yīng)相等。操作結(jié)果:求矩陣a、b的和c=a+b。(3)、transposesmarix(tsmatrix *a,tsmatrix *b)初始條件:矩陣a、b已存在且a指向矩陣a,b指向矩陣b。操作結(jié)果:將a指向的矩陣轉(zhuǎn)置到b指向的矩陣。(4)、print_smatrix(tsmatrix m)初始條件:矩陣m已存在操作結(jié)果:輸出矩陣m2、模塊調(diào)用圖主程序模塊創(chuàng)建三元組順序表模塊創(chuàng)建矩陣模塊矩陣運(yùn)算模塊輸出鏈表模塊銷(xiāo)毀矩陣模塊三 詳細(xì)設(shè)計(jì)1、每個(gè)模塊:(1) 創(chuàng)建用于存儲(chǔ)的三元組順序表#define maxsize 40 /假設(shè)非零元素個(gè)數(shù)的最大值為40 typed
6、ef int elemtype; typedef struct int i,j; /非零元的行下標(biāo)和列下標(biāo) elemtype e; /非零元的值 triple; typedef struct triple datamaxsize+1; int rposmaxrc+1; /各行第一個(gè)非零元在三元組的位置表 int hs,ls,fls; tsmatrix,*matrix; (2)、創(chuàng)建矩陣void creat(tsmatrix &m) int i,k; for(i=1;i=maxrc+1;i+) m.rposi=0; printf(請(qǐng)輸入矩陣的行數(shù)、列數(shù)和非零元個(gè)數(shù)(以空格隔開(kāi)):); scanf
7、(%d %d %d,&m.hs,&m.ls,&m.fls);/將得到的m矩陣的性質(zhì)保存printf(請(qǐng)用三元組形式輸入矩陣的元素(行 列 非零元素):n); for(i=1;i=m.fls;i+)scanf(%d %d %d,&m.datai.i,&m.datai.j,&m.datai.e);/將m中的非零元素記錄,生成矩陣 for(i=1,k=1;i=m.hs;i+) m.rposi=k; while(m.datak.i=i & k=m.fls)k+; (3)、矩陣的運(yùn)算1)矩陣加法void addsmatrix(tsmatrix a,tsmatrix b,tsmatrix &c,int n
8、) int a,b,temp,l; c.hs=a.hs;c.ls=a.ls;a=b=l=1;while(a=a.fls & b=b.fls) if(a.dataa.i=b.datab.i) if(a.dataa.jb.datab.j)c.datal=b.datab; c.datal+.e=n*b.datab+.e;elsetemp=a.dataa.e+n*b.datab.e; if(temp)c.datal=a.dataa; c.datal.e=temp; l+; a+;b+; else if(a.dataa.ib.datab.i)c.datal+=a.dataa+; else c.datal
9、=b.datab; c.datal+.e=n*b.datab+.e; while(a=a.fls)c.datal+=a.dataa+; while(bhs=a-ls;b-ls=a-hs;b-fls=a-fls;if(b-fls)q=1;for(col=1;colls;col+) for(p=1;pfls;p+)if(a-datap.j=col)b-dataq.i=a-datap.j;b-dataq.j=a-datap.i;b-dataq.e=a-datap.e;+q;(4)、輸出函數(shù)void print_smatrix(tsmatrix m) int k,l,n; matrix p; p=&m
10、; for(k=1,n=1;khs;k+) for(l=1;lls;l+) if(p-datan.i=k & p-datan.j=l) printf(%5d,p-datan.e); n+; else printf(%5d,0); printf(n); printf(n); (5)、銷(xiāo)毀矩陣void destory_smatrix(tsmatrix &m) m.hs=m.ls=m.fls=0; (6)、主函數(shù)void main() tsmatrix a,b,c; tsmatrix *p=&a,*q=&b;int flag,n; printf(t *矩陣的加法和轉(zhuǎn)制運(yùn)算器* n);printf(t
11、 1、稀疏矩陣的加法 n);printf(t 2、稀疏矩陣的轉(zhuǎn)置 n);printf(輸入要進(jìn)行的項(xiàng)目的編號(hào):); scanf(%d,&flag); creat(a); printf(矩陣a:n); print_smatrix(a); switch(flag) case 1:creat(b);n=1;printf(矩陣b:n); print_smatrix(b); if(a.hs=b.hs & a.ls=b.ls) printf(a+b:n); addsmatrix(a,b,c,n);print_smatrix(c); else printf(錯(cuò)誤!行列不一致n); break; case 2
12、: printf(a-b:n); transposesmarix(p,q); print_smatrix(b);break; default:printf(輸入錯(cuò)誤!n); destory_smatrix(a); destory_smatrix(b);destory_smatrix(c); 2、完整函數(shù)#include #include #include #define maxsize 40 /假設(shè)非零元素個(gè)數(shù)的最大值為40 #define maxrc 20/假設(shè)矩陣的最大行數(shù)為20 typedef int elemtype; typedef struct int i,j; /非零元的行下標(biāo)和
13、列下標(biāo) elemtype e; /非零元的值 triple; typedef struct triple datamaxsize+1; int rposmaxrc+1; /各行第一個(gè)非零元在三元組的位置表 int hs,ls,fls; tsmatrix,*matrix; void creat(tsmatrix &m)/創(chuàng)建矩陣 int i,k; for(i=1;i=maxrc+1;i+) m.rposi=0; printf(請(qǐng)輸入矩陣的行數(shù)、列數(shù)和非零元個(gè)數(shù)(以空格隔開(kāi)):); scanf(%d %d %d,&m.hs,&m.ls,&m.fls);/將得到的m矩陣的性質(zhì)保存printf(請(qǐng)用三
14、元組形式輸入矩陣的元素(行 列 非零元素):n); for(i=1;i=m.fls;i+)scanf(%d %d %d,&m.datai.i,&m.datai.j,&m.datai.e);/將m中的非零元素記錄,生成矩陣 for(i=1,k=1;i=m.hs;i+) m.rposi=k; while(m.datak.i=i & k=m.fls)k+; void addsmatrix(tsmatrix a,tsmatrix b,tsmatrix &c,int n)/矩陣相加 int a,b,temp,l; c.hs=a.hs;c.ls=a.ls;a=b=l=1;while(a=a.fls & b
15、=b.fls) if(a.dataa.i=b.datab.i) if(a.dataa.jb.datab.j)c.datal=b.datab; c.datal+.e=n*b.datab+.e;elsetemp=a.dataa.e+n*b.datab.e; if(temp)c.datal=a.dataa; c.datal.e=temp; l+; a+;b+; else if(a.dataa.ib.datab.i)c.datal+=a.dataa+; else c.datal=b.datab; c.datal+.e=n*b.datab+.e; while(a=a.fls)c.datal+=a.dat
16、aa+; while(bhs=a-ls;b-ls=a-hs;b-fls=a-fls;if(b-fls)q=1;for(col=1;colls;col+) for(p=1;pfls;p+)if(a-datap.j=col)b-dataq.i=a-datap.j;b-dataq.j=a-datap.i;b-dataq.e=a-datap.e;+q;void print_smatrix(tsmatrix m)/輸出函數(shù) int k,l,n; matrix p; p=&m; for(k=1,n=1;khs;k+) for(l=1;lls;l+) if(p-datan.i=k & p-datan.j=l
17、) printf(%5d,p-datan.e); n+; else printf(%5d,0); printf(n); printf(n); void destory_smatrix(tsmatrix &m)/銷(xiāo)毀矩陣 m.hs=m.ls=m.fls=0; void main() tsmatrix a,b,c; tsmatrix *p=&a,*q=&b;int flag,n; printf(t *矩陣的加法和轉(zhuǎn)制運(yùn)算器* n);printf(t 1、稀疏矩陣的加法 n);printf(t 2、稀疏矩陣的轉(zhuǎn)置 n);printf(輸入要進(jìn)行的項(xiàng)目的編號(hào):); scanf(%d,&flag); creat(a); printf(矩陣a:n); print_smatrix(a); switch(flag) case 1:creat(b);n=1;printf(矩陣b:n); print_smatrix(b); if(a.hs=b.hs & a.ls
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 施工現(xiàn)場(chǎng)施工防臺(tái)風(fēng)災(zāi)害制度
- 施工現(xiàn)場(chǎng)安全管理制度的國(guó)際比較與借鑒
- 施工單位關(guān)于現(xiàn)場(chǎng)布置的工作聯(lián)系函
- 科技輔助小學(xué)語(yǔ)文教學(xué)的策略與實(shí)踐
- 飯店生產(chǎn)安全事故應(yīng)急預(yù)案
- 食品安全的應(yīng)急預(yù)案
- DB6528T 146-2024庫(kù)爾勒香梨雜交育種技術(shù)規(guī)程
- DB3702T 46.2-2024地理標(biāo)志產(chǎn)品 平度大花生 第2部分:質(zhì)量標(biāo)準(zhǔn)
- 專(zhuān)賣(mài)店員工聘用合同標(biāo)準(zhǔn)格式
- 個(gè)人信用抵押借款合同2025
- 白酒銷(xiāo)售經(jīng)理述職報(bào)告
- 消防技術(shù)負(fù)責(zé)人任命書(shū)
- 六年級(jí)英語(yǔ)上冊(cè)綜合測(cè)試卷(一)附答案
- 部編小學(xué)語(yǔ)文(6年級(jí)下冊(cè)第6單元)作業(yè)設(shè)計(jì)
- 洗衣機(jī)事業(yè)部精益降本總結(jié)及規(guī)劃 -美的集團(tuán)制造年會(huì)
- 2015-2022年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文/數(shù)學(xué)/英語(yǔ)筆試參考題庫(kù)含答案解析
- 2023年菏澤醫(yī)學(xué)專(zhuān)科學(xué)校單招綜合素質(zhì)模擬試題及答案解析
- 鋁合金門(mén)窗設(shè)計(jì)說(shuō)明
- 常見(jiàn)食物的嘌呤含量表匯總
- 小學(xué)數(shù)學(xué)-三角形面積計(jì)算公式的推導(dǎo)教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 人教版數(shù)學(xué)八年級(jí)下冊(cè)同步練習(xí)(含答案)
評(píng)論
0/150
提交評(píng)論