Skip to main content

Advance Sparse Matrix Operations in C languages

Advance Sparse Matrix Operations in C languages
by DIBYENDU SWAR (rajamax1987@yahoo.com)
-----------------------------------------------------------------------------------------





#include<stdio.h>
#include<conio.h>
int isSparse(int [3][3]);
void getSparse(int [3][3]);
void dispSparse(int [3][3]);
void sumSparse(int [3][3],int [3][3],int [3][3]);
void multiSparse(int [3][3],int [3][3],int [3][3]);


void main()
{
int mat[3][3],mat1[3][3],rslt[3][3];
int i;
do{
clrscr();
printf("\n\t\tDATA STRUCTUTE OVER 2D ARRAY [DIBYENDU]\n\t\t------------------------------\n");
printf("\n\t\tSPARSE MATRIX OPERATIONS\n\n\t\t1. LOAD SPARSE [GET DATA]\n\n\t\t2. SUM SPARSE\n\nt\t\t3. MULTIPLY SPARSE\n\n\t\t4. DISPLAY MATRIXes\n\n\t\t5. DISPLAY SPARSEes\n\n\t\t6. EXIT\n\n\t\tENTER CHOICE :: ");
scanf("%d",&i);
switch(i)
{
case 1:
getSparse(mat);
getSparse(mat1);
break;
case 2:
sumSparse(mat,mat1,rslt);
getch();
break;
case 3:
multiSparse(mat,mat1,rslt);
getch();
break;
case 4:
dispSparse(mat);
dispSparse(mat1);
getch();
break;
case 5:
if(isSparse(mat)==1)
{
printf("\n\nFirse Matrix as SPARSE");
dispSparse(mat);
}
if(isSparse(mat1)==1)
{
printf("\n\nSecond Matrix as SPARSE");
dispSparse(mat1);
}
getch();
break;
case 6:
exit();
default:
printf("\nInvalid Choise");
break;
}
}while(1);
}


void getSparse(int m[3][3])
{
int i,j;
printf("\n\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("\nEnter Value of matrix_1[%d][%d] :: ",i+1,j+1);
scanf("%d",&m[i][j]);
}
}
}


int isSparse(int m[3][3])
{
int i,j,f,zr=0;


for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(m[i][j]==0)
{
zr++;
}
}
}


if(zr>=((3*3)/2))
{
f=1;
}else
{
f=0;
}
return(f);
}


void dispSparse(int m[3][3])
{
       int i,j;
       printf("\n");
       for(i=0;i<3;i++)
       {
printf("\n");
for(j=0;j<3;j++)
{
printf("\t%d",m[i][j]);
}
       }
       printf("\n\n");
}


void sumSparse(int m[3][3],int n[3][3],int r[3][3])
{
int i,j;
if(isSparse(m)==1 && isSparse(n)==1)
{
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
r[i][j]=m[i][j]+n[i][j];
}
}
dispSparse(m);
dispSparse(n);
printf("\nSummation of Two Sparse Matrix\n------------\n");
dispSparse(r);
}else{
printf("\nOne or Both of the MATRIX es are not Sparse");
}


}




void multiSparse(int m[3][3],int n[3][3],int r[3][3])
{
int i,j,k;
if(isSparse(m)==1 && isSparse(n)==1)
{
for(i=0;i<3;i++)
{
for(j=0;j< 3;j++)
{
r[i][j] = 0;
for(k=0;k<3;k++)
{
r[i][j] = r[i][j] + m[i][k] * n[k][j];
}
}
}

dispSparse(m);
dispSparse(n);
printf("\nMultiplication of Two Sparse Matrix\n------------\n");
dispSparse(r);

}else{
printf("\nOne or Both of the MATRIX es are not Sparse");
}
}

Comments

Popular posts from this blog

Setting up OpenGL environment for Microsoft Visual C++

Hi Friends, before starting the setting up OpenGL environment, please do the following first: 1.       Install Microsoft Visual C++ 6.0 (Comes with Ms Visual Studio 6.0) 2.       Download the file called “opengl95.exe” and “glutdlls.zip” from internet. [Just open browser-> navigate http://www.google.com -> type upper mentioned file name and search -> you will definitely find the appropriate link to download.] 3.       Run opengl95.exe file and it will be extracted and will be generated some files. Copy those files and 4.       Extract the file “glutdlls.zip” and it will also generate some more files. 5.       Now, combine all extracted files from two sources (opengl95.exe and glutdlls.zip) and place in one location. Setting up OpenGL environment for Microsoft Visual C++ With any system, you can start with a C\C++ compiler and install ...

Exp/ Imp vs. ExpDP/ ImpDP in Oracle 10g

ORACLE Export (exp) vs Datapump (expdp)    ORACLE provides two external utilities to transfer database objects from one database to another database. Traditional exports (exp /imp) are introduced before 10g. Then from 10g, ORACLE introduced datapump (expdp / impdp) as an enhancement to traditional export utility. Traditional Export (exp/ imp) This is an ORACLE database external utility, which is used to transfer database objects from one database server to another database server. It allows transferring the database objects over different platforms, different hardware and software configurations. When an export command is executed on a database, database objects are extracted with their dependency objects. That means if it extracts a table, the dependences like indexes, comments, and grants are extracted and written into an export file (binary format dump file). Following is the command to export a full database, Cmd > exp userid=username/password@exportdb_...

C Sample: String Concatenation In C Language

#include<stdio.h> #include<conio.h> #include<string.h> main() { char str1[30],str2[30]; printf("\nEnter 1st String"); gets(str1); printf("\nEnter 2nd String"); gets(str2); concat(str1,str2); printf("Output :: %s",str1); getch(); } concat(char *str1,char *str2) { while(*str1!='\0') str1++;      //Points to end of line while(*str2!='\0') { *str1=*str2; str1++; str2++; }*str1='\0'; }