數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(稀疏矩陣運(yùn)算器)_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(稀疏矩陣運(yùn)算器)_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(稀疏矩陣運(yùn)算器)_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(稀疏矩陣運(yùn)算器)_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(稀疏矩陣運(yùn)算器)_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

*****大學(xué)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)說明書題目:稀疏矩陣運(yùn)算器學(xué)生姓名:學(xué)號(hào):專業(yè):班級(jí):指導(dǎo)教師:2013年7月24日稀疏矩陣運(yùn)算器摘要摘要:設(shè)計(jì)一稀疏矩陣運(yùn)算器。實(shí)現(xiàn)兩個(gè)矩陣的相加、相減和相乘的功能。用“帶行邏輯鏈接信息”的三元組順序表表示稀疏矩陣,實(shí)現(xiàn)兩個(gè)矩陣相加、相減和相乘的運(yùn)算,采用分級(jí)的設(shè)計(jì)方法,分別設(shè)計(jì)出加、減、乘運(yùn)算器的子程序,相加運(yùn)算時(shí)只要依次存儲(chǔ)、掃描兩矩陣的行、列數(shù),假設(shè)行、列數(shù)相等,再取行、列下標(biāo)相等的元素,相加后存入結(jié)果矩陣。相減運(yùn)算與相加運(yùn)算相同,同樣取行、列下標(biāo)相等的元素,相減后存入結(jié)果矩陣。相乘運(yùn)算要先判斷兩矩陣能否相乘。假設(shè)能相乘,那么取行、列號(hào)相對(duì)應(yīng)的元素進(jìn)行相乘及相加,最后將對(duì)應(yīng)元素存入結(jié)果矩陣中。通過實(shí)驗(yàn)說明本程序能夠進(jìn)行稀疏矩陣的相加,相減,相乘運(yùn)算。具備矩陣的加、減、乘功能。關(guān)鍵詞:相加運(yùn)算器;相減運(yùn)算器;相乘運(yùn)算器數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書針對(duì)本課程設(shè)計(jì),完成以下課程設(shè)計(jì)任務(wù):熟悉系統(tǒng)實(shí)現(xiàn)工具和上級(jí)環(huán)境。根據(jù)課程設(shè)計(jì)任務(wù),查閱相關(guān)資料。針對(duì)所選課題完成以下工作:〔1〕、需求分析〔2〕、概要設(shè)計(jì)〔3〕、詳細(xì)設(shè)計(jì)〔4〕、編寫源程序〔5〕、靜態(tài)走查程序和上機(jī)調(diào)試程序4、書寫上述文檔和撰寫課程設(shè)計(jì)報(bào)告。目錄16973稀疏矩陣運(yùn)算器 I31887摘要 II31887課程設(shè)計(jì)任務(wù)書 III31887課程設(shè)計(jì)正文 Ⅳ11961第一章問題描述 511961第二章需求分析 68345第三章概要設(shè)計(jì) 928752第四章詳細(xì)設(shè)計(jì) 194.1函數(shù)說明 104.2算法分析 1911961第五章調(diào)試分析 2111961第六章測(cè)試結(jié)果 2311961第七章課程設(shè)計(jì)總結(jié) 2411961參考文獻(xiàn) 24附錄〔程序清單〕 33問題描述一、問題描述:稀疏矩陣是指那些多數(shù)元素為零的矩陣,利用“稀疏”特點(diǎn)進(jìn)行存儲(chǔ)和計(jì)算可以大大節(jié)省存儲(chǔ)空間,提高計(jì)算效率,實(shí)現(xiàn)一個(gè)能進(jìn)行稀疏矩陣根本運(yùn)算的運(yùn)算器。二、根本要求:以“帶行邏輯鏈接信息”的三元組順序表表示稀疏矩陣,實(shí)現(xiàn)兩個(gè)矩陣相加、相減和相乘的運(yùn)算。稀疏矩陣的輸入形式采用三元組表示,而運(yùn)算結(jié)果的矩陣那么以通常的陣列形式列出。需求分析1、運(yùn)算器程序以用戶和計(jì)算機(jī)的對(duì)話方式執(zhí)行,數(shù)組的建立方式為邊輸入邊建立。2、由題目要求可知:首先應(yīng)輸入矩陣的行數(shù)、列數(shù)和非零個(gè)數(shù),并判別給出的兩個(gè)矩陣的行、列數(shù)對(duì)于所要求作的運(yùn)算是否相匹配。3、程序可以對(duì)三元組的輸入順序不加以限制;根據(jù)對(duì)矩陣的行列,三元組作直接插入排序,從而進(jìn)行運(yùn)算時(shí),不會(huì)產(chǎn)生錯(cuò)誤。4、在用三元組表示稀疏矩陣時(shí),相加、相減和乘積所得結(jié)果矩陣應(yīng)該另生成,為了算法方便,使用二維數(shù)組存放。程序在VisualC++6.0環(huán)境下設(shè)計(jì)。程序執(zhí)行的命令為:1.稀疏矩陣加法;2.稀疏矩陣減法;3.稀疏矩陣乘法;概要設(shè)計(jì)1、三元組結(jié)構(gòu)定義:typedefstruct{//三元組結(jié)構(gòu)inti,j;//矩陣行下標(biāo)和列下標(biāo)inte;//值}triple;2、稀疏矩陣結(jié)構(gòu)定義:typedefstruct//矩陣結(jié)構(gòu){tripledata[MAXSIZE+1];intm,n,t;//矩陣的行數(shù)、列數(shù)、非零元個(gè)數(shù)}tripletable;3、兩個(gè)稀疏矩陣相加函數(shù):Add(tripletableM,tripletableT)4、兩個(gè)稀疏矩陣相減函數(shù):mut(tripletableM,tripletableT)5、兩個(gè)稀疏矩陣相乘函數(shù):mul(tripletableM,tripletableT)6、主函數(shù):voidmain(){初始化;switch{接受命令;選擇處理命令;}}7、本程序有四個(gè)模塊,調(diào)用關(guān)系如下:主程序模塊主程序模塊 矩陣輸入模塊矩陣輸入模塊矩陣運(yùn)算模塊矩陣運(yùn)算模塊 矩陣輸出模塊矩陣輸出模塊8、本程序的流程圖:開始開始選擇要執(zhí)行的操作作選擇要執(zhí)行的操作作選擇3,進(jìn)行矩陣乘法運(yùn)算選擇1,進(jìn)行矩陣加法運(yùn)算 選擇3,進(jìn)行矩陣乘法運(yùn)算選擇1,進(jìn)行矩陣加法運(yùn)算選擇2,進(jìn)行矩陣減法運(yùn)算選擇2,進(jìn)行矩陣減法運(yùn)算輸入n個(gè)矩陣A的行數(shù)、列數(shù)、非零元個(gè)數(shù)輸入n個(gè)矩陣A的行數(shù)、列數(shù)、非零元個(gè)數(shù)輸出結(jié)果輸出結(jié)果結(jié)束結(jié)束詳細(xì)設(shè)計(jì)4.1函數(shù)說明:1、稀疏矩陣的三元組順序表存儲(chǔ)表示:typedefstruct{//三元組結(jié)構(gòu)inti,j;//行下標(biāo)和列下標(biāo)inte;//值}triple;2、稀疏矩陣存儲(chǔ)表示:typedefstruct//矩陣結(jié)構(gòu){tripledata[MAXSIZE+1];intm,n,t;//矩陣的行數(shù)、列數(shù)、非零元個(gè)數(shù)}tripletable;主要函數(shù):voidAdd();voidcut();voidmul();intmain();4.2算法分析:設(shè)計(jì)一個(gè)矩陣類實(shí)現(xiàn)矩陣的運(yùn)算:classtripletable(包含矩陣的各種運(yùn)算函數(shù))。輸入矩陣〔以三元組形式輸入非零元〕,輸出矩陣〔陣列形式〕。{tripletableM;intm,n,t,i,j,e,k,c,d;inta[MAXSIZE][MAXSIZE];cout<<"輸入稀疏矩陣M的行數(shù),列數(shù)和非零元個(gè)數(shù):";cin>>M.m>>M.n>>M.t;for(k=1;k<=M.t;k++){cout<<"輸入第"<<k<<"個(gè)非零元素的行下標(biāo),列下標(biāo)和值:";cin>>M.data[k].i>>M.data[k].j>>M.data[k].e;}for(k=1;k<=M.t;k++){a[M.data[k].i][M.data[k].j]=M.data[k].e;}cout<<"矩陣M的行列形式為:"<<"\n";for(c=1;c<=M.m;c++){for(d=1;d<=M.n;d++)cout<<a[c][d]<<"";cout<<endl;}矩陣的加法:voidAdd()//矩陣相加{tripletableM;tripletableT;intm,n,t,i,j,e,k,c,d;inta[MAXSIZE][MAXSIZE]={0};//將二維數(shù)組初始化為零intb[MAXSIZE][MAXSIZE]={0};intf[MAXSIZE][MAXSIZE]={0};cout<<"輸入稀疏矩陣M的行數(shù),列數(shù)和非零元個(gè)數(shù):";cin>>M.m>>M.n>>M.t;for(k=1;k<=M.t;k++){cout<<"輸入第"<<k<<"個(gè)非零元素的行下標(biāo),列下標(biāo)和值:";cin>>M.data[k].i>>M.data[k].j>>M.data[k].e;}cout<<"矩陣M的行列形式為:"<<"\n";for(k=1;k<=M.t;k++){a[M.data[k].i][M.data[k].j]=M.data[k].e;}for(c=1;c<=M.m;c++){for(d=1;d<=M.n;d++)cout<<a[c][d]<<"";cout<<endl;}cout<<"輸入稀疏矩陣T的行數(shù),列數(shù)和非零元個(gè)數(shù):";cin>>T.m>>T.n>>T.t;if(M.m!=T.m||M.n!=T.n)//檢驗(yàn)兩矩陣能否相加{cout<<"兩矩陣行或列不相等,請(qǐng)重新進(jìn)入系統(tǒng)輸入!"<<"\n";return;}for(k=1;k<=T.t;k++){cout<<"輸入第"<<k<<"個(gè)非零元素的行下標(biāo),列下標(biāo)和值:";cin>>T.data[k].i>>T.data[k].j>>T.data[k].e;}cout<<"矩陣T的行列形式為:"<<"\n";for(k=1;k<=T.t;k++){b[T.data[k].i][T.data[k].j]=T.data[k].e;}for(c=1;c<=T.m;c++){for(d=1;d<=T.n;d++)cout<<b[c][d]<<"";cout<<endl;}for(c=1;c<=M.m;c++){for(d=1;d<=M.n;d++){f[c][d]=a[c][d]+b[c][d];//兩矩陣行、列號(hào)相等的元素之和為結(jié)果矩陣對(duì)應(yīng)元素}}cout<<"兩矩陣相加后的行列形式為:"<<endl;for(c=1;c<=M.m;c++){for(d=1;d<=M.n;d++)cout<<f[c][d]<<"";cout<<endl;}}以上主要設(shè)計(jì)思想:此功能由函數(shù)Add()實(shí)現(xiàn),當(dāng)用戶選擇該功能時(shí)系統(tǒng)即提示用戶初始化要進(jìn)行加法的兩個(gè)矩陣的信息。然后檢測(cè)這兩個(gè)矩陣是否符合矩陣相加的規(guī)那么,如果符合,進(jìn)行加法。否那么重新進(jìn)入系統(tǒng)輸入數(shù)據(jù)。最后輸出結(jié)果。矩陣的減法:voidcut()//矩陣相減{tripletableM;tripletableT;intm,n,t,i,j,e,k,c,d;inta[MAXSIZE][MAXSIZE]={0};intb[MAXSIZE][MAXSIZE]={0};intf[MAXSIZE][MAXSIZE]={0};cout<<"輸入稀疏矩陣M的行數(shù),列數(shù)和非零元個(gè)數(shù):";cin>>M.m>>M.n>>M.t;for(k=1;k<=M.t;k++){cout<<"輸入第"<<k<<"個(gè)非零元素的行下標(biāo),列下標(biāo)和值:";cin>>M.data[k].i>>M.data[k].j>>M.data[k].e;}cout<<"矩陣M的行列形式為:"<<"\n";for(k=1;k<=M.t;k++){a[M.data[k].i][M.data[k].j]=M.data[k].e;}for(c=1;c<=M.m;c++){for(d=1;d<=M.n;d++)cout<<a[c][d]<<"";cout<<endl;}cout<<"輸入稀疏矩陣T的行數(shù),列數(shù)和非零元個(gè)數(shù):";cin>>T.m>>T.n>>T.t;if(M.m!=T.m||M.n!=T.n)//檢驗(yàn)兩矩陣能否進(jìn)行減法運(yùn)算{cout<<"兩矩陣行或列不相等,請(qǐng)重新進(jìn)入系統(tǒng)輸入!"<<"\n";return;}for(k=1;k<=T.t;k++){cout<<"輸入第"<<k<<"個(gè)非零元素的行下標(biāo),列下標(biāo)和值:";cin>>T.data[k].i>>T.data[k].j>>T.data[k].e;}cout<<"矩陣T的行列形式為:"<<"\n";for(k=1;k<=T.t;k++){b[T.data[k].i][T.data[k].j]=T.data[k].e;}for(c=1;c<=T.m;c++){for(d=1;d<=T.n;d++)cout<<b[c][d]<<"";cout<<endl;}for(c=1;c<=M.m;c++){for(d=1;d<=M.n;d++){f[c][d]=a[c][d]-b[c][d];//兩矩陣行、列號(hào)相等的元素之差為結(jié)果矩陣對(duì)應(yīng)元素}}cout<<"兩矩陣相減后的行列形式為:"<<endl;for(c=1;c<=M.m;c++){for(d=1;d<=M.n;d++)cout<<f[c][d]<<"";cout<<endl;}}以上主要設(shè)計(jì)思想:此功能由函數(shù)cut()實(shí)現(xiàn),當(dāng)用戶選擇該功能時(shí)系統(tǒng)即提示用戶初始化要進(jìn)行減法的兩個(gè)矩陣的信息。然后檢測(cè)這兩個(gè)矩陣是否符合矩陣相減的規(guī)那么,如果符合,進(jìn)行減法運(yùn)算。否那么重新進(jìn)入系統(tǒng)輸入數(shù)據(jù)。最后輸出結(jié)果。矩陣的乘法:voidmul()//矩陣相乘{(lán)tripletableM;tripletableT;intm,n,t,i,j,e,k,c,d;inta[MAXSIZE][MAXSIZE]={0};intb[MAXSIZE][MAXSIZE]={0};intf[MAXSIZE][MAXSIZE]={0};cout<<"輸入稀疏矩陣M的行數(shù),列數(shù)和非零元個(gè)數(shù):";cin>>M.m>>M.n>>M.t;for(k=1;k<=M.t;k++){cout<<"輸入第"<<k<<"個(gè)非零元素的行下標(biāo),列下標(biāo)和值:";cin>>M.data[k].i>>M.data[k].j>>M.data[k].e;}cout<<"矩陣M的行列形式為:"<<"\n";for(k=1;k<=M.t;k++){a[M.data[k].i][M.data[k].j]=M.data[k].e;}for(c=1;c<=M.m;c++){for(d=1;d<=M.n;d++)cout<<a[c][d]<<"";cout<<endl;}cout<<"輸入稀疏矩陣T的行數(shù),列數(shù)和非零元個(gè)數(shù):";cin>>T.m>>T.n>>T.t;if(M.n!=T.m){cout<<"第一個(gè)矩陣的行和第二個(gè)矩陣的列不相等,請(qǐng)重新進(jìn)入系統(tǒng)輸入!"<<"\n";//判斷兩個(gè)矩陣能否進(jìn)行乘法運(yùn)算return;}for(k=1;k<=T.t;k++){cout<<"輸入第"<<k<<"個(gè)非零元素的行下標(biāo),列下標(biāo)和值:";cin>>T.data[k].i>>T.data[k].j>>T.data[k].e;}cout<<"矩陣T的行列形式為:"<<"\n";for(k=1;k<=T.t;k++){b[T.data[k].i][T.data[k].j]=T.data[k].e;}for(c=1;c<=T.m;c++){for(d=1;d<=T.n;d++)cout<<b[c][d]<<"";cout<<endl;}for(c=1;c<=M.m;c++)//乘法的結(jié)果矩陣的元素為兩矩陣對(duì)應(yīng)行、列元素依次相乘之和{for(d=1;d<=M.n;d++){intg,x;intsum=0;for(g=1;g<=M.n;g++){x=a[c][g]*b[g][d];sum=sum+x;}f[c][d]=sum;}}cout<<"兩矩陣相乘后的行列形式為:"<<endl;for(c=1;c<=M.m;c++){for(d=1;d<=T.n;d++)cout<<f[c][d]<<"";cout<<endl;}}以上主要設(shè)計(jì)思想為:此功能由函數(shù)mul()實(shí)現(xiàn)。當(dāng)用戶選擇該功能,系統(tǒng)提示輸入要進(jìn)行相乘的兩個(gè)矩陣的詳細(xì)信息。然后檢測(cè)兩者是否可以相乘,如果不能,那么重新進(jìn)入系統(tǒng)輸入,最后得到結(jié)果。調(diào)試分析測(cè)試數(shù)據(jù):〔1〕、矩陣的加法:矩陣M的行數(shù)、列數(shù)、非零個(gè)數(shù):3、3、4;非零元素的三元組表示為:111,112,223,234;矩陣T的行數(shù)、列數(shù)、非零個(gè)數(shù):3、3、4;非零元素的三元組表示為:125,216,227,338;兩矩陣相加后的矩陣陣列形式為:1706104008〔2〕、矩陣的減法:矩陣M的行數(shù)、列數(shù)、非零個(gè)數(shù):3、3、4;非零元素的三元組表示為:111,112,223,234;矩陣T的行數(shù)、列數(shù)、非零個(gè)數(shù):3、3、4;非零元素的三元組表示為:125,216,227,338;兩矩陣相加后的矩陣陣列形式為:1-30-6-4400-8〔3〕、矩陣的乘法:矩陣M的行數(shù)、列數(shù)、非零個(gè)數(shù):4、3、4;非零元素的三元組表示為:111,112,223,234;矩陣T的行數(shù)、列數(shù)、非零個(gè)數(shù):3、4、4;非零元素的三元組表示為:125,216,227,338;兩矩陣相加后的矩陣陣列形式為:121900182132000000000遇到的問題:二維數(shù)組的初始化問題;解決方法:利用inta[MAXSIZE][MAXSIZE]={0};語句,很好的將數(shù)組a[MAXSIZE][MAXSIZE]的所有元素都初始化為零。測(cè)試結(jié)果〔1〕、矩陣的加法:矩陣M的行數(shù)、列數(shù)、非零個(gè)數(shù):3、3、4;非零元素的三元組表示為:111,112,223,234;矩陣T的行數(shù)、列數(shù)、非零個(gè)數(shù):3、3、4;非零元素的三元組表示為:125,216,227,338;兩矩陣相加后的矩陣陣列形式為:1706104008〔2〕、矩陣的減法:矩陣M的行數(shù)、列數(shù)、非零個(gè)數(shù):3、3、4;非零元素的三元組表示為:111,112,223,234;矩陣T的行數(shù)、列數(shù)、非零個(gè)數(shù):3、3、4;非零元素的三元組表示為:125,216,227,338;兩矩陣相加后的矩陣陣列形式為:1-30-6-4400-8〔3〕、矩陣的乘法:矩陣M的行數(shù)、列數(shù)、非零個(gè)數(shù):4、3、4;非零元素的三元組表示為:111,112,223,234;矩陣T的行數(shù)、列數(shù)、非零個(gè)數(shù):3、4、4;非零元素的三元組表示為:125,216,227,338;兩矩陣相加后的矩陣陣列形式為:121900182132000000000課程設(shè)計(jì)總結(jié)由于本程序要求實(shí)現(xiàn)用三元組的形式對(duì)稀疏矩陣進(jìn)行輸入,用陣列的形式對(duì)矩陣進(jìn)行輸出,所以,一開始的想法構(gòu)思存在困難。當(dāng)發(fā)現(xiàn)運(yùn)用二維數(shù)組進(jìn)行矩陣輸出時(shí),對(duì)二維數(shù)組的賦值又出現(xiàn)了問題,但最終運(yùn)用數(shù)組初始賦值為零的方法解決了這個(gè)問題??偟膩碚f,此程序的理解難度并不高,整個(gè)程序的算法思想也比擬簡(jiǎn)單,主要還是一些細(xì)節(jié)性問題需要去克服。通過此次課程設(shè)計(jì),使我更加扎實(shí)的掌握了有關(guān)三元組表示稀疏矩陣方面的知識(shí),在設(shè)計(jì)過程中雖然遇到了一些問題,但經(jīng)過一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識(shí)欠缺和經(jīng)驗(yàn)缺乏。

在課程設(shè)計(jì)過程中,不斷發(fā)現(xiàn)錯(cuò)誤,不斷改正,不斷領(lǐng)悟,不斷獲取。最終的檢測(cè)調(diào)試環(huán)節(jié),本身就是在踐行“過而能改,善莫大焉”的知行觀。這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多問題,最后在一些資料和書本的幫助下,終于游逆而解。參考文獻(xiàn):[1]譚浩強(qiáng)著.C++程序設(shè)計(jì)〔第二版〕[M].北京:清華大學(xué)出版社,2009.5[2]嚴(yán)蔚敏、吳偉民主編《數(shù)據(jù)結(jié)構(gòu)〔C語言版〕》[M].清華大學(xué)出版社2004.11附錄〔源代碼〕:#include<iostream>usingnamespacestd;#defineMAXSIZE100typedefstruct{//三元組結(jié)構(gòu)inti,j;//矩陣行下標(biāo)和列下標(biāo)inte;//值}triple;typedefstruct//矩陣結(jié)構(gòu){tripledata[MAXSIZE+1];intm,n,t;//矩陣的行數(shù)、列數(shù)、非零元個(gè)數(shù)}tripletable;voidAdd()//矩陣相加{tripletableM;tripletableT;intm,n,t,i,j,e,k,c,d;inta[MAXSIZE][MAXSIZE]={0};intb[MAXSIZE][MAXSIZE]={0};intf[MAXSIZE][MAXSIZE]={0};cout<<"輸入稀疏矩陣M的行數(shù),列數(shù)和非零元個(gè)數(shù):";cin>>M.m>>M.n>>M.t;for(k=1;k<=M.t;k++){cout<<"輸入第"<<k<<"個(gè)非零元素的行下標(biāo),列下標(biāo)和值:";cin>>M.data[k].i>>M.data[k].j>>M.data[k].e;}cout<<"矩陣M的行列形式為:"<<"\n";for(k=1;k<=M.t;k++){a[M.data[k].i][M.data[k].j]=M.data[k].e;}for(c=1;c<=M.m;c++){for(d=1;d<=M.n;d++)cout<<a[c][d]<<"";cout<<endl;}cout<<"輸入稀疏矩陣T的行數(shù),列數(shù)和非零元個(gè)數(shù):";cin>>T.m>>T.n>>T.t;if(M.m!=T.m||M.n!=T.n){cout<<"兩矩陣行或列不相等,請(qǐng)重新進(jìn)入系統(tǒng)輸入!"<<"\n";return;}for(k=1;k<=T.t;k++){cout<<"輸入第"<<k<<"個(gè)非零元素的行下標(biāo),列下標(biāo)和值:";cin>>T.data[k].i>>T.data[k].j>>T.data[k].e;}cout<<"矩陣T的行列形式為:"<<"\n";for(k=1;k<=T.t;k++){b[T.data[k].i][T.data[k].j]=T.data[k].e;}for(c=1;c<=T.m;c++){for(d=1;d<=T.n;d++)cout<<b[c][d]<<"";cout<<endl;}for(c=1;c<=M.m;c++){for(d=1;d<=M.n;d++){f[c][d]=a[c][d]+b[c][d];}}cout<<"兩矩陣相加后的行列形式為:"<<endl;for(c=1;c<=M.m;c++){for(d=1;d<=M.n;d++)cout<<f[c][d]<<"";cout<<endl;}}voidcut()//矩陣相減{tripletableM;tripletableT;intm,n,t,i,j,e,k,c,d;inta[MAXSIZE][MAXSIZE]={0};intb[MAXSIZE][MAXSIZE]={0};intf[MAXSIZE][MAXSIZE]={0};cout<<"輸入稀疏矩陣M的行數(shù),列數(shù)和非零元個(gè)數(shù):";cin>>M.m>>M.n>>M.t;for(k=1;k<=M.t;k++){cout<<"輸入第"<<k<<"個(gè)非零元素的行下標(biāo),列下標(biāo)和值:";cin>>M.data[k].i>>M.data[k].j>>M.data[k].e;}cout<<"矩陣M的行列形式為:"<<"\n";for(k=1;k<=M.t;k++){a[M.data[k].i][M.data[k].j]=M.data[k].e;}for(c=1;c<=M.m;c++){for(d=1;d<=M.n;d++)cout<<a[c][d]<<"";cout<<endl;}cout<<"輸入稀疏矩陣T的行數(shù),列數(shù)和非零元個(gè)數(shù):";cin>>T.m>>T.n>>T.t;if(M.m!=T.m||M.n!=T.n){cout<<"兩矩陣行或列不相等,請(qǐng)重新進(jìn)入系統(tǒng)輸入!"<<"\n";return;}for(k=1;k<=T.t;k++){cout<<"輸入第"<<k<<"個(gè)非零元素的行下標(biāo),列下標(biāo)和值:";cin>>T.data[k].i>>T.data[k].j>>T.data[k].e;}cout<<"矩陣T的行列形式為:"<<"\n";for(k=1;k<=T.t;k++){b[T.data[k].i][T.data[k].j]=T.data[k].e;}for(c=1;c<=T.m;c++){for(d=1;d<=T.n;d++)cout<<b[c][d]<<"";cout<<endl;}for(c=1;c<=M.m;c++){for(d=1;d<=M.n;d++){f[c][d]=a[c][d]-b[c][d];}}cout<<"兩矩陣相減后的行列形式為:"<<endl;for(c=1;c<=M.m;c++){for(d=1;d<=M.n;d++)cout<<f[c][d]<<"";cout<<endl;}}voidmul()//矩陣相乘{(lán)tripletableM;tripletableT;intm,n,t,i,j,e,k,c,d;inta[MAXSIZE][MAXSIZE]={0};intb[MAXSIZE][MAXSIZE]={0};intf[MAXSIZE][MAXSIZE]={0};cout<<"輸入稀疏矩陣M的行數(shù),列數(shù)和非零元個(gè)數(shù):";cin>>M.m>>M.n>>M.t;for(k=1;k<=M.t;k++){cout<<"輸入第"<<k<<"個(gè)非零元素的行下標(biāo),列下標(biāo)和值:";cin>>M.data[k].i>>M.data[k].j>>M.data[k].e;}cout<<"矩陣M的行列形式為:"<<"\n";for(k=1;k<=M.t;k++){a[M.data[k].i][M.data[k].j]

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論