




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、.數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)五班級:06計(jì)本(1) 姓名:魏建平 學(xué)號:20060724035 題目: 嚴(yán)蔚敏習(xí)題實(shí)習(xí)4第1個(gè):實(shí)現(xiàn)一個(gè)能進(jìn)行基本稀疏矩陣運(yùn)算的運(yùn)算器一、 需求分析1、 本程序?qū)崿F(xiàn)一個(gè)基本稀疏矩陣的簡單運(yùn)算,包括加、減、乘。2、 執(zhí)行操作前應(yīng)先創(chuàng)造要進(jìn)行運(yùn)算的兩個(gè)矩陣,然后再選擇進(jìn)行相應(yīng)的操作。3、 以三元組順序表表示稀疏矩陣,實(shí)現(xiàn)二個(gè)矩陣相加,相減,相乘的運(yùn)算;稀疏矩陣的輸入形式為三元組表示,運(yùn)算結(jié)果則為通常的陣列形式列出!4、 首先輸入矩陣的行數(shù)和列數(shù),并判別給出的兩個(gè)矩陣和行、列數(shù)對于所要求作的運(yùn)算是否相匹配??稍O(shè)矩陣的行數(shù)和列數(shù)均不超過20;5、 程序先給出了菜單項(xiàng),用戶只需按照
2、菜單提示進(jìn)行相應(yīng)的操作就行了。6、 測試數(shù)據(jù):二、 概要設(shè)計(jì)1、 抽象數(shù)據(jù)類型三元組的定義如下:ADT Triple數(shù)據(jù)對象:D=ai| ai(-ElemSet,i=1,2,.,n,n>=0;數(shù)據(jù)關(guān)系:R1=<ai-1,ai>| ai-1,ai(- D,i=2,.,n基本操作:略2、基于三元組順序表表示的矩陣操作: (1)創(chuàng)建三元組順序表表示的矩陣:void createMatrix(TSMatrix &A) (2)初始化矩陣:void initMatrix(TSMatrix &A) (3)相加:void add(TSMatrix A,TSMatrix B,T
3、SMatrix &C) (4)相減:void sub(TSMatrix A,TSMatrix &B,TSMatrix &C) (5)找m行n列元素在A中順序表中的位置:int search(TSMatrix A,int m,int n) (6)相乘;void mult(TSMatrix A,TSMatrix B,TSMatrix &C) (7)輸入以陣列形式表示的矩陣:void print(TSMatrix A) 3、主程序 Void main() While(true) 調(diào)用相應(yīng)函數(shù)執(zhí)行相應(yīng)操作; 輸出操作結(jié)果;4、本程序只有兩個(gè)模塊,調(diào)用關(guān)系簡單:三、 詳細(xì)
4、設(shè)計(jì)1、 三元組結(jié)構(gòu)描述:#define MAXSIZE 20using namespace std;typedef struct int row;int col;int e;Triple;typedef structTriple dateMAXSIZE;int m,n,len;TSMatrix;void initMatrix(TSMatrix &A)A.len=0;A.m=0;A.n=0;for(int i=0;i<MAXSIZE;i+)A.datei.col=0;A.datei.e=0;A.datei.row=0;2、 各種操作函數(shù)源代碼:void createMatrix(
5、TSMatrix &A)initMatrix(A);cout<<"創(chuàng)建矩陣:" cout<<"請輸入矩陣的行列值及非0元素個(gè)數(shù)n" cin>>A.m>>A.n>>A.len; for(int i=0;i<A.len;i+) cout<<"請輸入第"<<i<<"個(gè)非0元素對應(yīng)的行、列、值:" cin>>A.datei.row; cin>>A.datei.col; cin>>
6、A.datei.e; void add(TSMatrix A,TSMatrix B,TSMatrix &C)/相加if(A.m=B.m&&A.n=B.n)int i=0,j=0;int k=0;C.m=A.m;C.n=A.n; while( i<A.len|j<B.len) if(i=A.len&&j<B.len) C.datek.col=B.datej.col; C.datek.row=B.datej.row; C.datek+.e=B.datej.e; C.len+; j+; else if(i<A.len&&
7、j=B.len) C.datek.col=A.datei.col; C.datek.row=A.datei.row; C.datek+.e=A.datei.e; C.len+; i+; else if(A.datei.row>B.datej.row) C.datek.col=B.datej.col; C.datek.row=B.datej.row; C.datek+.e=B.datej.e; C.len+; j+; else if(A.datei.row<B.datej.row) C.datek.col=A.datei.col; C.datek.row=A.datei.row; C
8、.datek+.e=A.datei.e; C.len+; i+; else if(A.datei.col=B.datej.col)if(A.datei.e+B.datej.e!=0) C.datek.col=A.datei.col; C.datek.row=A.datei.row; C.datek+.e=A.datei.e+B.datej.e; C.len+; i+; j+; else if(A.datei.col>B.datej.col) C.datek.col=B.datej.col; C.datek.row=B.datej.row; C.datek+.e=B.datej.e; C.
9、len+; j+; else if(A.datei.col<B.datej.col) C.datek.col=A.datei.col; C.datek.row=A.datei.row; C.datek+.e=A.datei.e; C.len+; i+; else cout<<"不能相加!"void sub(TSMatrix A,TSMatrix &B,TSMatrix &C)/相減for(int k=0;k<B.len;k+)B.datek.e=-B.datek.e;if(A.m=B.m&&A.n=B.n)add(A,
10、B,C);else cout<<"不能相減!"for( k=0;k<B.len;k+)B.datek.e=-B.datek.e;int search(TSMatrix A,int m,int n) int flag=-1; for(int i=0;i<MAXSIZE;i+) if(A.datei.row=m&&A.datei.col=n) flag=i; break; return flag;void mult(TSMatrix A,TSMatrix B,TSMatrix &C)/相乘int i=0,j=0;if(A.n=B.
11、m)C.m=A.m;C.n=B.n;for(i=0;i<A.len;i+)for(j=0;j<B.len;j+) if(A.datei.col=B.datej.row)int flag=search(C,A.datei.row,B.datej.col);if(flag=-1) C.dateC.len.col=B.datej.col;C.dateC.len.row=A.datei.row; C.dateC.len+.e=A.datei.e*B.datej.e;elseC.dateflag.e=C.dateflag.e+A.datei.e*B.datej.e;elsecout<&
12、lt;"不能相乘!"<<endl;void print(TSMatrix A)int k=0;int i,j;int MMAXSIZEMAXSIZE;for(i=0;i<A.m;i+)for(j=0;j<A.n;j+)Mij=0;while(k<A.len)MA.datek.row-1A.datek.col-1=A.datek.e;k+;for(i=0;i<A.m;i+)cout<<"| "for(j=0;j<A.n;j+)cout<<Mij<<" "cou
13、t<<"|"<<endl;void showtip()cout<<"-請選擇要執(zhí)行的操作-"<<endl;cout<<endl;cout<<" 0-創(chuàng)建矩陣"<<endl;cout<<" 1-A+B"<<endl;cout<<" 2-A-B"<<endl;cout<<" 3-A*B"<<endl;cout<<&
14、quot; 4-退出"<<endl;cout<<""<<endl;3、 主函數(shù):void main()TSMatrix A,B,C;initMatrix(A);initMatrix(B);initMatrix(C);showtip();int i;cin>>i;while(true)switch(i)case 0:system("cls");cout<<"創(chuàng)建矩陣A:"<<endl; createMatrix(A); cout<<"
15、創(chuàng)建矩陣B:"<<endl; createMatrix(B);showtip();break;case 1:system("cls");if(A.m=0|B.m=0)cout<<"未建矩陣"<<endl;elseinitMatrix(C);add(A,B,C);if(A.m=B.m&&A.n=B.n)cout<<"加的結(jié)果;"<<endl;print(A);cout<<"+"<<endl;print(B);
16、cout<<"="<<endl;print(C);showtip();break;case 2:system("cls");if(A.m=0|B.m=0)cout<<"未建矩陣"<<endl;elseinitMatrix(C);sub(A,B,C);cout<<"減的結(jié)果;"<<endl;print(A);cout<<"+"<<endl;print(B);cout<<"=&quo
17、t;<<endl;print(C);showtip();break;case 3:system("cls"); if(A.m=0|B.m=0)cout<<"未建矩陣"<<endl;elseinitMatrix(C);mult(A,B,C);if(A.n=B.m)cout<<"乘后的結(jié)果;"<<endl;print(A); cout<<"*"<<endl; print(B); cout<<"="<<endl; print(C);showtip();break;case 4:exit(0);break;cin>>i;四、 調(diào)試分析1、 由于本程序涉及的函數(shù)比較多,所以開始時(shí)在
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 63438:2024 EN Railway applications - Fixed installations - Protection principles for AC and DC electric traction power supply systems
- 2025-2030年中國鍋爐制造行業(yè)運(yùn)營狀況及發(fā)展規(guī)劃分析報(bào)告
- 2025-2030年中國鏟運(yùn)機(jī)市場發(fā)展現(xiàn)狀及前景趨勢分析報(bào)告
- 2025-2030年中國鉛鋅冶煉市場運(yùn)營狀況及發(fā)展策略研究報(bào)告
- 2025山西省建筑安全員B證(項(xiàng)目經(jīng)理)考試題庫
- 2025年青海省安全員-C證考試(專職安全員)題庫附答案
- 2025-2030年中國虹膜識別機(jī)系統(tǒng)市場經(jīng)營狀況及發(fā)展建議分析報(bào)告
- 2025年天津市安全員《A證》考試題庫
- 2025-2030年中國相容劑行業(yè)發(fā)展現(xiàn)狀及投資規(guī)劃研究報(bào)告
- 2025-2030年中國生物質(zhì)鍋爐產(chǎn)業(yè)運(yùn)營狀況與發(fā)展?jié)摿Ψ治鰣?bào)告
- 小學(xué)二年級有余數(shù)的除法口算題(共300題)
- 中小學(xué)心理健康教育教師技能培訓(xùn)專題方案
- 高速公路隧道管理站專業(yè)知識競賽試題與答案
- 中國傳媒大學(xué)《廣播節(jié)目播音主持》課件
- 2015 年全國高校俄語專業(yè)四級水平測試試卷
- T∕CCCMHPIE 1.3-2016 植物提取物 橙皮苷
- 土石壩設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 一季責(zé)任制整體護(hù)理持續(xù)改進(jìn)實(shí)例
- 清華抬頭信紙
- 毫火針療法PPT課件
- 三年級部編版語文下冊第二單元日積月累
評論
0/150
提交評論