📄 xishujuzhen.cpp
字号:
#include<stdio.h>
#include<string.h>
#define OK 1
#define MAX 10
typedef struct
{
int i,j;
int v;
}TriTupleNode;
typedef struct
{
TriTupleNode data[MAX];
int m;
int n;
int t;
}TSMatrix;
//输入矩阵
void InitTriTupleNode(TSMatrix *a)
{
int i,j,k,val,maxrow,maxcol;
maxrow=0;
maxcol=0;
k=1;
while(i!=-1&&j!=-1)
{
printf("input row col val:");
scanf("%d%d%d",&i,&j,&val);
a->data[k].i=i;
a->data[k].j=j;
a->data[k].v=val;
if(maxrow<i)maxrow=i;
if(maxcol<j)maxcol=j;
k++;
}
a->m=maxrow;
a->n=maxcol;
a->t=k;
}
//显示矩阵
void ShowMatrix(TSMatrix *a)
{
int p,q;
int t=1;
for(p=1;p<=a->m;p++)
{
for(q=1;q<=a->n;q++)
if(a->data[t].i==p&&a->data[t].j==q)
{
printf("%d ",a->data[t].v);
t++;
}
else printf("0 ");
printf("\n");
}
}
//矩阵相加
void Add(TSMatrix *a,TSMatrix *b,TSMatrix *c)
{
int i=1,j=1,k=1;
while(i<=a->t&&j<=b->t)
{
if(a->data[i].i==b->data[j].i)
{
if(a->data[i].j==b->data[j].j)
{
c->data[k].i=a->data[i].i;
c->data[k].j=a->data[i].j;
c->data[k].v=a->data[i].v+b->data[j].v;
i++;
j++;
k++;
}
else if(a->data[i].j<b->data[j].j)
{
c->data[k].i=a->data[i].i;
c->data[k].j=a->data[i].j;
c->data[k].v=a->data[i].v;
i++;
k++;
}
else if(a->data[i].j>b->data[j].j)
{
c->data[k].i=b->data[j].i;
c->data[k].j=b->data[j].j;
c->data[k].v=b->data[j].v;
j++;
k++;
}
}
else if(a->data[i].i<b->data[j].i)
{
c->data[k].i=a->data[i].i;
c->data[k].j=a->data[i].j;
c->data[k].v=a->data[i].v;
i++;
k++;
}
else if(a->data[i].i>b->data[j].i)
{
c->data[k].i=b->data[j].i;
c->data[k].j=b->data[j].j;
c->data[k].v=b->data[j].v;
j++;
k++;
}
}
c->n=a->n;
c->m=a->m;
c->t=k;
}
void main()
{
TSMatrix a,b,c;
TSMatrix *pa=&a,*pb=&b,*pc=&c;
printf("请输入矩阵A:\n");
InitTriTupleNode(pa);
ShowMatrix(pa);
printf("请输入矩阵B:\n");
InitTriTupleNode(pb);
ShowMatrix(pb);
printf("两矩阵相加得:\n");
Add(pa,pb,pc);
ShowMatrix(pc);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -