c语言实验-数组

  • 格式:doc
  • 大小:163.00 KB
  • 文档页数:7

第一题:转置

第二题:加法

#include

#define N 4

#define MaxSize 100

typedef struct tupnode

{

int r;

int c;

int d;

}TupNode;

typedef struct matrix

{

TupNode data[MaxSize];

int rows;

int cols;

int nums;

}TSMatrix;

void CreatMat(TSMatrix &t,int a[N][N]) {

int i,j;

t.rows=N;

t.cols=N;

t.nums=0;

for(i=0;i

for(j=0;j

if(a[i][j]!=0)

{

t.data[t.nums].r=i;

t.data[t.nums].c=j;

t.data[t.nums].d=a[i][j];

t.nums++;

}

}

void DispMat(TSMatrix t)

{

int i;

if(t.nums<=0)

return;

cout<

cout<<"-----------------------"<

for(i=0;i

cout<

}

void PlusMat(TSMatrix tsa,TSMatrix tsb,TSMatrix &tsc)

{

int p=0,q=0,i,j,s=0;

bool X, Y;

tsc.rows=tsa.rows;

tsc.cols=tsa.cols;

tsc.nums=0;

for(i = 0; i < N; i ++)

{

for(j = 0; j < N; j ++)

{

X = tsa.data[p].r == i && tsa.data[p].c == j;

Y = tsb.data[q].r == i && tsb.data[q].c == j;

if (X || Y)

{

tsc.data[s].r = i;

tsc.data[s].c = j; tsc.nums ++;

if (X && Y)

{

tsc.data[s++].d = tsa.data[p ++].d + tsb.data[q ++].d;

}

else if (X)

{

tsc.data[s++].d = tsa.data[p ++].d;

}

else

{

tsc.data[s++].d = tsb.data[q ++].d;

}

}

}

}

cout<

}

void DispNN(TSMatrix t)

{

int i,j,k,flag;

for(i=0;i

{

for(j=0;j

{

flag=0;

for(k=0;k

if((i==t.data[k].r)&&(j==t.data[k].c))

{

cout<

flag=1;

break;

}

if(flag==0)

cout<<"0"<<' ';

}

cout<

}

}

void main()

{

int a[N][N]={{1,0,3,0},{0,1,0,0},{0,0,1,0},{0,0,1,1}}; int b[N][N]={{2,0,1,3},{0,1,0,1},{0,0,2,0},{0,1,0,2}};

TSMatrix tsa,tsb,tsc;

CreatMat(tsa,a);

CreatMat(tsb,b);

cout<<"a的三元组为:"<

DispMat(tsa);

cout<<"b的三元组为:"<

DispMat(tsb);

cout<<"a与b相加后的结果矩阵为:"<

PlusMat(tsa,tsb,tsc);

DispNN(tsc);

}

第三题:乘法

#include

#define N 4

#define MaxSize 100

typedef struct tupnode

{ int r;

int c;

int d;

}TupNode;

typedef struct matrix

{

TupNode data[MaxSize];

int rows;

int cols;

int nums;

}TSMatrix;

void CreatMat(TSMatrix &t,int a[N][N])

{

int i,j;

t.rows=N;

t.cols=N;

t.nums=0;

for(i=0;i

for(j=0;j

if(a[i][j]!=0)

{

t.data[t.nums].r=i;

t.data[t.nums].c=j;

t.data[t.nums].d=a[i][j];

t.nums++;

}

}

void DispMat(TSMatrix t)

{

int i;

if(t.nums<=0)

return;

cout<

cout<<"-----------------------"<

for(i=0;i

cout<

}

void MultiMat(TSMatrix tsa,TSMatrix tsb,TSMatrix &tsc)

{

int p,q,t; tsc.rows=tsa.rows;

tsc.cols=tsa.cols;

tsc.nums=1;

t=tsa.nums>tsb.nums ? tsa.nums:tsb.nums;

if(tsa.nums!=0&&tsb.nums!=0)

{

for(p=0;p

for(q=0;q

if(tsa.data[p].r==tsb.data[q].r&&tsa.data[p].c==tsb.data[q].c)

{

tsc.data[p].r=tsa.data[p].r;

tsc.data[p].c=tsa.data[p].c;

tsc.data[p].d=tsa.data[p].d*tsb.data[q].d;

tsc.nums++;

}

}

}

void DispNN(TSMatrix t)

{

int i,j,k,flag;

for(i=0;i

{

for(j=0;j

{

flag=0;

for(k=0;k

if((i==t.data[k].r)&&(j==t.data[k].c))

{

cout<

flag=1;

break;

}

if(flag==0)

cout<<"0"<<' ';

}

cout<

}

}

void main()

{

int a[N][N]={{1,0,3,0},{0,1,0,0},{0,0,1,0},{0,0,1,1}};