/************************************************************
* Filename: sparse_matrix.c
* Description: To find transpose of a sparse matrix using array
* Author: Sarju S
* Date: 25-Nov-2011
*************************************************************/
#define MAX_TERMS 100
#include
typedef struct{
int col;
int row;
int value;
}sparse_matrix;
sparse_matrix a[MAX_TERMS],b[MAX_TERMS];
int input_matrix[10][10];
void create_sparse(int row, int col){
int i,j,k=1,count=0;
a[0].row=row;
a[0].col=col;
for(i=0;i
for(j=0;j
if(input_matrix[i][j]!=0)
{
count++;
a[k].row=i;
a[k].col=j;
a[k].value = input_matrix[i][j];
k++;
}
a[0].value = count;
}
void print_sparse(sparse_matrix matrix[]){
int i;
for(i=0;i<=matrix[0].value;i++)
printf("%d\t%d\t%d\n",matrix[i].row,matrix[i].col,matrix[i].value);
}
void transpose_sparse(){
int currentb=1,n,i,j;
n=a[0].value; /* total number of elements*/
b[0].row = a[0].col;
b[0].col = a[0].row;
b[0].value = a[0].value;
for(i=0;i
for(j=1;j<=n;j++)
if(a[j].col==i)
{
/* Element is in the current column add it to b*/
b[currentb].row = a[j].col;
b[currentb].col = a[j].row;
b[currentb].value = a[j].value;
currentb++;
}
}
void main(){
int row,col,i,j;
printf("\nEnter the order of the matrix:");
scanf("%d%d",&row,&col);
printf("\nEnter the elements\n");
/*Read the matrix*/
for(i=0;i
for(j=0;j
scanf("%d",&input_matrix[i][j]);
/*Create sparse matrix*/
create_sparse(row,col);
printf("The Given Matrix is\n");
for(i=0;i
{
for(j=0;j
printf("%d\t",input_matrix[i][j]);
printf("\n");
}
/*Print sparse matrix*/
printf("\nThe Sparse Matrix is\n");
print_sparse(a);
/* Call transpose function*/
transpose_sparse();
/*Print transpose of sparse matrix*/
printf("\nThe transpose of Sparse Matrix is\n");
print_sparse(b);
}
OUTPUT
sjcet@sjcet-laptop:~$ gcc sparse_matrix.c
sjcet@sjcet-laptop:~$ ./a.out
Enter the order of the matrix:6 6
Enter the elements
15 0 0 22 0 -15
0 11 3 0 0 0
0 0 0 -6 0 0
0 0 0 0 0 0
91 0 0 0 0 0
0 0 28 0 0 0
The Given Matrix is
15 0 0 22 0 -15
0 11 3 0 0 0
0 0 0 -6 0 0
0 0 0 0 0 0
91 0 0 0 0 0
0 0 28 0 0 0
The Sparse Matrix is
6 6 8
0 0 15
0 3 22
0 5 -15
1 1 11
1 2 3
2 3 -6
4 0 91
5 2 28
The transpose of Sparse Matrix is
6 6 8
0 0 15
0 4 91
1 1 11
2 1 3
2 5 28
3 0 22
3 2 -6
5 0 -15
0 comments:
Post a Comment