📄 5_2.txt
字号:
#include<stdio.h>
#define maxsize 100
typedef struct node{
int i,j,v; /*i,j,v分别为行号、列号、元素值*/
}elem;
typedef struct smatrix{
elem data[maxsize];
int row,col,count; /*row,col,count分别为行数、列数、总的元素个数*/
}Smatrix;
int row=4,col=4;
creatematrix(Smatrix *x)
{
int i,count; /*count为非零元素的个数*/
printf("请输入矩阵中非零元素的个数:\n");
scanf("%d",&count);
printf("请按行号、列号、元素值输入:\n");
for(i=0;i<count;i++)
scanf("%d%d%d",&((x->data[i]).i),&((x->data[i]).j),&((x->data[i]).v));
x->row=row;
x->col=col;
x->count=count;
}
addmatrix(Smatrix a, Smatrix b,Smatrix *c)
{
int t1=0,t2=0,t=0,v;
c->row=row;
c->col=col;
c->count=0;
while(t1<a.count && t2<b.count){
if((a.data[t1]).i==(b.data[t2]).i){
if((a.data[t1]).j==(b.data[t2]).j){
v=(a.data[t1]).v+(b.data[t2]).v;
if(v!=0){
(c->data[t]).i=(a.data[t1]).i;
(c->data[t]).j=(a.data[t1]).j;
(c->data[t]).v=v;
t++;t1++;t2++;
c->count++;
}
else{
t1++;t2++;
}
}
else
if((a.data[t1]).j<(b.data[t2]).j){
(c->data[t]).i=(a.data[t1]).i;
(c->data[t]).j=(a.data[t1]).j;
(c->data[t]).v=(a.data[t1]).v;
t++;t1++;
c->count++;
}
else{
(c->data[t]).i=(b.data[t2]).i;
(c->data[t]).j=(b.data[t2]).j;
(c->data[t]).v=(b.data[t2]).v;
t++;t2++;
c->count++;
}
}
else
if((a.data[t1]).i<(b.data[t2]).i){
(c->data[t]).i=(a.data[t1]).i;
(c->data[t]).j=(a.data[t1]).j;
(c->data[t]).v=(a.data[t1]).v;
t++;t1++;
c->count++;
}
else{
(c->data[t]).i=(b.data[t2]).i;
(c->data[t]).j=(b.data[t2]).j;
(c->data[t]).v=(b.data[t2]).v;
t++;t2++;
c->count++;
}
}
while(t1<a.count){
(c->data[t]).i=(a.data[t1]).i;
(c->data[t]).j=(a.data[t1]).j;
(c->data[t]).v=(a.data[t1]).v;
t++;t1++;
c->count++;
}
while(t2<b.count){
(c->data[t]).i=(b.data[t2]).i;
(c->data[t]).j=(b.data[t2]).j;
(c->data[t]).v=(b.data[t2]).v;
t++;t2++;
c->count++;
}
}
main()
{
Smatrix A,B,C;
int i=0;
creatematrix(&A);
creatematrix(&B);
addmatrix(A,B,&C);
printf("\n");
for(i=0;i<C.count;i++)
printf("%d %d %d\n",(C.data[i]).i,(C.data[i]).j,(C.data[i]).v);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -