1// Aim: Program to perform Sparse Matrix Transpose.
2#include<stdio.h>
3int s[10][10],t[10][10];
4int read(int a[10][10],int m,int n){
5 int i,j,k=1;
6 s[0][0]=m;
7 s[0][1]=n;
8 for(i=0;i<m;i++){
9 for(j=0;j<n;j++){
10 if(a[i][j]!=0){
11 s[k][0]=i;
12 s[k][1]=j;
13 s[k][2]=a[i][j];
14 k++;
15 }
16 }
17 }
18 s[0][2]=k-1;
19 printf("\nThe sparse matrix is :\n");
20 for(i=0;i<k;i++){
21 for(j=0;j<3;j++){
22 printf("%d\t",s[i][j]);
23 }
24 printf("\n");
25 }
26}
27void transpose(){
28 int m,n,k,i,j;
29 t[0][0]=s[0][1];
30 t[0][1]=s[0][0];
31 t[0][2]=s[0][2];
32 k=1;
33 m=s[0][1];
34 n=s[0][2];
35 for(i=0;i<m;i++){
36 for(j=1;j<=n;j++){
37 if(s[j][1]==i){
38 t[k][0]=s[j][1];
39 t[k][1]=s[j][0];
40 t[k][2]=s[j][2];
41 k++;
42 }
43 }
44 }
45 printf("\nThe transpose of the sparse matrix is :\n");
46 for(i=0;i<k;i++){
47 for(j=0;j<3;j++){
48 printf("%d\t",t[i][j]);
49 }
50 printf("\n");
51 }
52}
53void main(){
54 int a[10][10],m,n,i,j;
55 printf("Enter the number of rows and columns of the matrix :");
56 scanf("%d%d",&m,&n);
57 printf("Enter the elements of the matrix :\n");
58 for(i=0;i<m;i++){
59 for(j=0;j<n;j++){
60 scanf("%d",&a[i][j]);
61 }
62 }
63 read(a,m,n);
64 transpose();
65}