#include <stdio.h>
#include <stdlib.h>
#define MAX_TERMS 10
#define ROWS 3
#define COLS 3
typedef struct{
int row;
int col;
int value;
} element;
typedef struct SparceMatrix{
element data[MAX_TERMS];
int rows;
int cols;
int terms;
}SparseMatrix;
SparseMatrix sparse_matrix_add2(SparseMatrix a, SparseMatrix b)
{
SparseMatrix c;
int ca = 0, cb = 0, cc = 0, i = 0;
if (a.rows != b.rows || a.cols != b.cols){
fprintf(stderr, "희소행렬 크기 에러\n");
exit(1);
}
c.rows = a.rows;
c.cols = a.cols;
c.terms = 0;
while (ca < a.terms && cb < b.terms){
int inda = a.data[ca].row * a.cols + a.data[ca].col;
int indb = b.data[cb].row * b.cols + b.data[cb].col;
if (inda < indb)
c.data[cc++] = a.data[ca++];
else if (inda == indb)
{
if ((a.data[ca].value + b.data[cb].value) != 0)
{
c.data[cc].row = a.data[ca].row;
c.data[cc].col = a.data[ca].col;
c.data[cc++].value = a.data[ca++].value + b.data[cb++].value;
}
}
else
c.data[cc++] = b.data[cb++];
}
for (; ca < a.terms;)
c.data[cc++] = a.data[ca++];
for (; cb < b.terms;)
c.data[cc++] = b.data[cb++];
c.terms = cc;
return c;
}
main(){
int i;
SparseMatrix m1 = { { { 1, 1, 5 }, { 2, 2, 9 } }, 3, 3, 2 };
SparseMatrix m2 = { { { 0, 0, 5 }, { 2, 2, 9 } }, 3, 3, 2 };
SparseMatrix m3;
m3 = sparse_matrix_add2(m1, m2);
printf("A\n");
printf("B\n");
printf("C\n");
}
여기서 m1의 행렬과 m2의 행렬의 덧셈 나타내는 m3의 행렬을 나타내는 문장 어찌만들까요 ㅠㅠㅠ 풀었는데 답을 모르겟어여
댓글 0