Navigation

Saturday, 28 February 2015

Addition of the sparse matrices

#include<stdio.h>
#include<conio.h>
void main()
{
    int a[20][20],b[20][20],sp1[20][20],sp2[20][20],add[20][20],flag;
    int m,n,i,j,x1=0,x2=0,x3=0;
    clrscr();
    printf("Enter the size of first matrix(r*c)...\n\n");
    scanf("%d%d",&m,&n);
    clrscr();
    printf("\nEnter the %d elements of the first sparse matrix....\n\n",m*n);
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            printf("a[%d][%d]=",i,j);
            scanf("%d",&a[i][j]);
            if(a[i][j]!=0)
            {
                x1++;
                sp1[x1][0]=i;
                sp1[x1][1]=j;
                sp1[x1][2]=a[i][j];
            }
        }
    }
    sp1[0][0]=m;
    sp1[0][1]=n;
    sp1[0][2]=x1;
    clrscr();
    printf("\nEnter the %d elements of the second sparse matrix....\n\n",m*n);
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            printf("b[%d][%d]=",i,j);
            scanf("%d",&b[i][j]);
            if(b[i][j]!=0)
            {
                x2++;
                sp2[x2][0]=i;
                sp2[x2][1]=j;
                sp2[x2][2]=b[i][j];
            }
        }
    }
    sp2[0][0]=m;
    sp2[0][1]=n;
    sp2[0][2]=x2;
    clrscr();
    printf("\n\n\nTHe first sparse matrix is....\n\n");
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            printf("\t%d",a[i][j]);
        }
        printf("\n");
    }
    getch();
    printf("\n\n\nTHe second sparse matrix is....\n\n");
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            printf("\t%d",b[i][j]);

        }
        printf("\n");
    }
    getch();
    clrscr();
    printf("\n\nthe alternate form of first sparse matrix i s....\n\n");
    for(i=0;i<=x1;i++)
    {
        for(j=0;j<3;j++)
        {
            printf("\t%d",sp1[i][j]);

        }
        printf("\n");
    }
    getch();
    printf("\n\nthe alternate form of second sparse matrix i s....\n\n");
    for(i=0;i<=x2;i++)
    {
        for(j=0;j<3;j++)
        {
            printf("\t%d",sp2[i][j]);

        }
        printf("\n");
    }
    getch();
    for(i=1;i<=x2;i++)
    {
        for(j=1;j<=x1;j++)
        {
            flag=0;
            if(sp1[j][0]==-9999)
            continue;
            if(sp2[i][0]==-9999)
            break;
            if(sp1[j][0]<sp2[i][0])
            {
                x3++;
                add[x3][0]=sp1[j][0];
                add[x3][1]=sp1[j][1];
                add[x3][2]=sp1[j][2];
                sp1[j][0]=-9999;
                flag=1;
            }
            else
            if((sp1[j][0]==sp2[i][0])&&(sp1[j][1]==sp2[i][1]))
            {
                x3++;
                add[x3][0]=sp1[j][0];
                add[x3][1]=sp1[j][1];
                add[x3][2]=sp1[j][2]+sp2[i][2];
                sp1[j][0]=sp2[i][0]=-9999;
                flag=1;
                break;
            }
            else
            if((sp1[j][0]==sp2[i][0])&&(sp1[j][1])<sp2[i][1])
            {
                x3++;
                add[x3][0]=sp1[j][0];
                add[x3][1]=sp1[j][1];
                add[x3][2]=sp1[j][2];
                sp1[j][0]=-9999;
                flag=1;
            }
            else
            if(flag==0)
            {
                x3++;
                add[x3][0]=sp2[i][0];
                add[x3][1]=sp2[i][1];
                add[x3][2]=sp2[i][2];
                sp2[i][0]=-9999;
            }
        }
    }
    for(j=x2;j<=x1;j++)
    {
        if(sp1[j][0]!=-9999)
        {
            x3++;
            add[x3][0]=sp1[j][0];
            add[x3][1]=sp1[j][1];
            add[x3][2]=sp1[j][2];
        }
    }
    for(i=x1;i<=x2;i++)
    {
        if(sp2[i][0]!=-9999)
        {
            x3++;
            add[x3][0]=sp2[i][0];
            add[x3][1]=sp2[i][1];
            add[x3][2]=sp2[i][2];
        }
    }
    add[0][0]=m;
    add[0][1]=n;
    add[0][2]=x3;
    printf("\n\nThe addition of the sparse matrices is...\n\n");
    for(i=0;i<=x3;i++)
    {
        for(j=0;j<3;j++)
        {
            printf("\t%d",add[i][j]);
            getch();
        }
        printf("\n");
    }
    getch();
}

No comments:

Post a Comment