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}};