0% found this document useful (0 votes)
12 views13 pages

Sparse

Uploaded by

yashsawang77
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views13 pages

Sparse

Uploaded by

yashsawang77
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

/*

* Assignment No Sparse Matrix

*/

#include<stdio.h>

void create(int [30][30],int,int);

void createSparse(int [30][3],int,int,int);

void display(int [30][30],int,int);

void displaySparse(int [30][3],int,int);

void convert(int [30][30],int [30][3],int,int);

void convert_2d(int [30][3],int [30][30]);

void transpose(int [30][3],int [30][3]);

void addition(int [30][3],int [30][3],int [30][3]);

int r=0,c=0,r1=0,c1=0,r2=0,c2=0,r3=0,c3=0;

int main()

int a[30][30],b[30][30],as[30][3],bs[30][3],cc[30][30],ts[30][3],cs[30][3],as1[30][3];

int ch,v;

//char ch1;
do

printf("\n\n\n\t\t\t*** MENU ***\n\n") ;

printf("\n\t\t-----------------------------------------------------");

printf("\n\n\n\t\t1.Create 2D Matrix\n\n\t\t2.Display 2D Matrix");

printf("\n\n\t\t3.Convert 2D Matrix in Sparse");

printf("\n\n\t\t4.Create First Sparse Matrix\n\n\t\t5.Create 2nd Sparse Matrix");

printf("\n\n\t\t6.Display 1st Sparse Matrix\n\n\t\t7.Display 2nd Sparse Matrix");

printf("\n\n\t\t8.Convert Sparse Matrix in 2D");

printf("\n\n\t\t9.Add two Sparse matrice");

printf("\n\n\t\t10.Transpose of the 1st Sparse Matrix\n\n\t\t11.Exit\n");

printf("\n\t\t-----------------------------------------------------");

printf("\n\n\t\tEnter Your Choice : ");

scanf("%d",&ch);

switch(ch)

case 1:

printf("\n\n\t\tFirst Enter matrix A");

printf("\n\n\t\t Enter the size of the matrix :");

scanf("%d%d",&r,&c);

create(a,r,c);

break;
case 2:

printf("\n\n\n\n\t\t*** Matrix A ***\n\n\n");

display(a,r,c);

break;

case 3:

printf("\n\n\n\n\t\t*** Matrix A ***\n\n\n");

display(a,r,c);

convert(a,as1,r,c);

printf("\n\n\n\n\t\t*** Sparse Matrix of A ***\n\n\n");

displaySparse(as1,as1[0][2]+1,3);

break;

case 4:

printf("\n\n\t\t Enter Sparse matrix A");

printf("\n\n\t\t Enter the size of the matrix :");

scanf("%d%d",&r1,&c1);

printf("\n\n\t\t Enter the number of non zero values :");

scanf("%d",&v);

createSparse(as,r1,c1,v);

break;

case 5:

printf("\n\n\t\t Enter Sparse matrix B");

printf("\n\n\t\t Enter the size of the matrix :");


scanf("%d%d",&r2,&c2);

printf("\n\n\t\t Enter the number of non zero values :");

scanf("%d",&v);

createSparse(bs,r2,c2,v);

break;

case 6:

printf("\n\n\n\n\t\t*** Sparse Matrix of A ***\n\n\n");

displaySparse(as,as[0][2]+1,3);

break;

case 7:

printf("\n\n\n\n\t\t*** Sparse Matrix of B ***\n\n\n");

displaySparse(bs,bs[0][2]+1,3);

break;

case 8:

printf("\n\n\n\n\t\t*** Sparse Matrix of A ***\n\n\n");

displaySparse(as,as[0][2]+1,3);

convert_2d(as,cc);

printf("\n\n\n\n\t\t*** Converted 2D Matrix ***\n\n\n");

break;

case 9:

addition(as,bs,cs);

printf("\n\n\n\n\t\t*** Sparse Matrix A ***\n\n\n");


displaySparse(as,as[0][2]+1,3);

printf("\n\n\n\n\t\t*** Sparse Matrix B ***\n\n\n");

displaySparse(bs,bs[0][2]+1,3);

printf("\n\n\n\n\t\t*** Addition Of Sparse Matrix ***\n\n\n");

displaySparse(cs,cs[0][2]+1,3);

break;

case 10:

printf("\n\n\n\n\t\t*** Sparse Matrix A ***\n\n\n");

displaySparse(as,as[0][2]+1,3);

transpose(as,ts);

printf("\n\n\t\tTranspose of Sparse Matrix A ***\n\n\n");

displaySparse(ts,ts[0][2]+1,3);

break;

/*printf("\n\n\n\n\t\tDo u want to continue\t");

scanf("%c",&ch1);

if(ch1=='n')

break;*/

//}

}while(ch!=12);

return 0;

}
void create(int a[30][30],int r,int c)

int i,j;

printf("\n\n\t\t Enter the elements of matrix:");

for(i=0;i<r;i++)

for(j=0;j<c;j++)

scanf("%d",&a[i][j]);

void createSparse(int a[30][3],int r,int c,int v)

int i,j;

a[0][0]=r;

a[0][1]=c;

a[0][2]=v;

printf("\n\n\t\t Enter the elements of matrix:");

for(i=1;i<=a[0][2];i++)

printf("\n\n\t\t Enter the number of row,number of col and nonzero value:");

scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);

}
}

void display(int s[30][30],int r,int c)

int i,j;

for(i=0;i<r;i++)

printf("\n\n");

for(j=0;j<c;j++)

printf("\t\t%d",s[i][j]);

void displaySparse(int s[30][3],int r,int c)

int i,j,v;

v=s[0][2];

printf("\n\n\t\tRow Col Value");

for(i=0;i<=v;i++)

printf("\n\n");

printf("\t\t %d %d %d",s[i][0],s[i][1],s[i][2]);

void convert(int aa[30][30],int sp[30][3],int n,int m)


{

int p=1,i,j;

sp[0][0]=n;

sp[0][1]=m;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

if(aa[i][j]!=0)

sp[p][0]=i;

sp[p][1]=j;

sp[p][2]=aa[i][j];

p++;

sp[0][2]=p-1;

void convert_2d(int sp[30][3],int aa[30][30])


{

int i,j,k=1;

r3=sp[0][0];

c3=sp[0][1];

for(i=0;i<r3;i++)

for(j=0;j<c3;j++)

if(i==sp[k][0]&&j==sp[k][1])

aa[i][j]=sp[k][2];

k++;

else

aa[i][j]=0;

printf("\n\n\n\n\t\t*** Matrix c ***\n\n");

display(aa,r3,c3);

void transpose(int sp1[30][3], int sp2[30][3])

int c1=1,i,j;

sp2[0][0]=sp1[0][0];
sp2[0][1]=sp1[0][1];

sp2[0][2]=sp1[0][2];

for(i=0;i<sp1[0][0];i++)

for(j=1;j<sp1[0][2]+1;j++)

if(sp1[j][1]==i)

sp2[c1][0]=sp1[j][1];

sp2[c1][1]=sp1[j][0];

sp2[c1][2]=sp1[j][2];

c1++;

void addition(int aa[30][3],int bb[30][3],int cc[30][3])

int i=1,j=1,n,n1,k=1;

n=aa[0][2];

n1=bb[0][2];

cc[0][0]=aa[0][0];

cc[0][1]=aa[0][1];

while(i<=n && j<=n1)


{

if(aa[i][0]==bb[j][0] && aa[i][1]==bb[j][1])

cc[k][0]=aa[i][0];

cc[k][1]=aa[i][1];

cc[k][2]=aa[i][2]+bb[j][2];

i++;

j++;

k++;

else if(aa[i][0]==bb[j][0] && aa[i][1]!=bb[j][1])

if(aa[i][1]<bb[j][1])

cc[k][0]=aa[i][0];

cc[k][1]=aa[i][1];

cc[k][2]=aa[i][2];

i++;

k++;

if(bb[j][1]<aa[i][1])

cc[k][0]=bb[j][0];

cc[k][1]=bb[j][1];

cc[k][2]=bb[j][2];
j++;

k++;

else if(aa[i][0]<bb[j][0])

cc[k][0]=aa[i][0];

cc[k][1]=aa[i][1];

cc[k][2]=aa[i][2];

i++;

k++;

else if(bb[j][0]<aa[i][0])

cc[k][0]=bb[j][0];

cc[k][1]=bb[j][1];

cc[k][2]=bb[j][2];

j++;

k++;

while(i<=n)
{

cc[k][0]=aa[i][0];

cc[k][1]=aa[i][1];

cc[k][2]=aa[i][2];

i++;

k++;

while(j<=n1)

cc[k][0]=bb[j][0];

cc[k][1]=bb[j][1];

cc[k][2]=bb[j][2];

j++;

k++;

cc[0][2]=k-1;

You might also like