#include #include #define MAX 9 int getCnt(int p[][3],int r,int c); int** getSparse(int cnt); int** consSparse(int mat[][3],int r,int c); void fillSparse(int mat[][3],int r,int c,int **sp,int cnt); void print(int mat[][3],int r,int c); void printSparse(int **sp,int cnt); int** ConsAddSparse(int mat1[][3],int mat2[][3],int r,int c,int *num); int** ConsProdSparse(int mat1[][3],int mat2[][3],int r,int c,int *num); int main() { int a[3][3] = {{1,0,7},{0,0,8},{9,0,0}}; int b[3][3] = {{0,0,8},{1,0,3},{0,4,5}}; int **aS,**bS,**sum,**prod,cnt=0; //Print A and its Sparse print(a,3,3); printf("\n------ \n"); print(b,3,3); //sum = ConsAddSparse(a,b,3,3,&cnt); prod = ConsProdSparse(a,b,3,3,&cnt); getchar(); return 0; } int getCnt(int p[][3],int r,int c) { int cnt = 0; for(int i=0;i= cnt) { flag = 1; break; } } if(flag == 1) break; } printf("\n\t Sparse Filled..\n"); return; } int** consSparse(int mat[][3],int r,int c) { int cnt = getCnt(mat,r,c); int **sp; sp = getSparse(cnt); printf(" \n Cnt = %d \n",cnt); fillSparse(mat,r,c,sp,cnt); printSparse(sp,cnt); } void printSparse(int **sp,int cnt) { printf("\n-------------------\n"); for(int i=0;i= cnt1) && (ind2 < cnt2) ) { printf("\n\t\t >> Mat 2 %d ",cnt2); for(;ind2 != cnt2;ind2++) { sum[k][0] = bsp[ind2][0]; sum[k][1] = bsp[ind2][1]; sum[k][2] = bsp[ind2][2]; k++; } break; } else if ((ind2 >= cnt2) && (ind1 < cnt1) ) { printf("\n\t\t >> Mat 1 %d ",cnt1); for(;ind1 bsp[ind2][0]) || ( (asp[ind1][0] == bsp[ind2][0]) && (asp[ind1][1] > bsp[ind2][1]) ) ) { sum[k][0] = bsp[ind2][0]; sum[k][1] = bsp[ind2][1]; sum[k][2] = bsp[ind2][2]; ind2++; k++; } } printf("\n\t\t\tEnd : Ind1 : %d Ind2 : %d \n",ind1,ind2); } printSparse(sum,k); return sum; } int** ConsProdSparse(int mat1[][3],int mat2[][3],int r,int c,int *num) { int cnt1 = getCnt(mat1,r,c); int cnt2 = getCnt(mat2,r,c); int **asp,**bsp,**prod,flag =0,k=0,i=0,j=0,l; printf(" \n Cnt1 = %d \n",cnt1); printf(" \n Cnt2 = %d \n",cnt2); asp = getSparse(cnt1); bsp = getSparse(cnt2); fillSparse(mat1,r,c,asp,cnt1); fillSparse(mat2,r,c,bsp,cnt2); printSparse(asp,cnt1); printSparse(bsp,cnt2); prod = getSparse(MAX); for(i=0;i