稀疏矩陣加法_第1頁
稀疏矩陣加法_第2頁
稀疏矩陣加法_第3頁
稀疏矩陣加法_第4頁
稀疏矩陣加法_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、#include<stdio.h>#include<cstdlib>#define maxsize 30typedef structint i,j;float e;haha;typedef struct heheint rows;int cols;int nums;haha datamaxsize;hehe,*friday;void createform(friday &m)m=(friday)malloc(sizeof(hehe);looop:printf("請輸入矩陣的行數,列數,非零元個數: ");scanf("%d%d%d&

2、quot;,&m->rows,&m->cols,&m->nums);while(m->rows<=0|m->cols<=0|m->nums<=0|m->nums>m->cols*m->rows)printf("對不起,輸入不滿足要求,請重新輸入: ");scanf("%d%d%d",&m->rows,&m->cols,&m->nums);if(m->nums>maxsize)printf("

3、非零元素超過最大分配空間,請重新分配元素空間");return ;printf("請輸入非零元行標,列標,大小: n"); for(int l=0;l<m->nums;) scanf("%d%d%f",&m->datal.i,&m->datal.j,&m->datal.e); if(m->datal.i>m->rows|m->datal.i<1|m->datal.j>m->cols|m->datal.j<1) printf(&quo

4、t;輸入的行列不合法,此次輸入無效,請繼續(xù)輸入n"); else if(m->datal.e=0) printf("輸入的必須是非零元元素,此次輸入無效,請繼續(xù)輸入n"); else l+; int t1,t2; float t; for(int p=0;p<m->nums-1;p+) for(int q=1;q<m->nums;q+) if(m->datap.i>m->dataq.i|(m->datap.i=m->dataq.i&&m->datap.j>m->dataq

5、.j) t1=m->datap.i; m->datap.i=m->dataq.i; m->dataq.i=t1; t2=m->datap.j; m->datap.j=m->dataq.j; m->dataq.j=t2; t=m->datap.e; m->datap.e=m->dataq.e; m->dataq.e=t; for( p=0;p<m->nums-1;p+) for(int q=1;q<m->nums;q+) if(m->datap.i=m->dataq.i&&

6、m->datap.j=m->dataq.j) printf("非零元素在同一位置連續(xù)出現,矩陣構造失敗,請重新構造:n"); goto looop; void matadd(friday a,friday b,friday &c)int x=0,y=0,z=0;float v;while(x<a->nums&&y<b->nums)if(a->datax.i=b->datay.i)if(a->datax.j<b->datay.j)c->dataz.i=a->datax.i;c

7、->dataz.j=a->datax.j;c->dataz.e=a->datax.e;z+;x+;elseif(a->datax.j>b->datay.j)c->dataz.i=b->datay.i;c->dataz.j=b->datay.j;c->dataz.e=b->datay.e;z+;y+;elsev=a->datax.e+b->datay.e;if(v!=0)c->dataz.i=a->datax.i;c->dataz.j=a->datax.j;c->dataz.e

8、=v;z+;x+;y+;elseif(a->datax.i<b->datay.i)c->dataz.i=a->datax.i;c->dataz.j=a->datax.j;c->dataz.e=a->datax.e;z+;x+;elsec->dataz.i=b->datay.i;c->dataz.j=b->datay.j;c->dataz.e=b->datay.e;z+;y+;if(y<b->nums) c->dataz.i=b->datay.i;c->dataz.j=b-&g

9、t;datay.j;c->dataz.e=b->datay.e; z+;y+; if(x<a->nums) c->dataz.i=a->datax.i;c->dataz.j=a->datax.j;c->dataz.e=a->datax.e; z+;x+;c->nums=z;c->rows=a->rows;c->cols=a->cols;return ;void print(friday m)printf("t%dt%dt%dn",m->rows,m->cols,m->

10、nums);printf("t-n");for(int o=0;o<m->nums;o+)printf("t%dt%dt%fn",m->datao.i,m->datao.j,m->datao.e);void wxinyongheng()friday a,b,c; createform(a); printf("a矩陣創(chuàng)建成功n");loop: createform(b); printf("b矩陣創(chuàng)建成功n");if(a->rows!=b->rows|a->cols!=b->cols)printf("兩矩陣必須滿足行列分別相等,矩陣b不滿足要求,請重新構造n");goto loop;c=(friday)malloc(sizeof(hehe); matadd(a,b,c); printf("b矩陣創(chuàng)建成功n");printf("a矩陣的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論