C Language | Arrays 14

Question:9.
Sum of two matrices (Sum of two double dimension arrays).
Conditions:
The dimensions of both matrices should be same. i.e. the number of rows and columns in both should be the same.
Sol:

/* Sum of two matrix */
#include<stdio.h>
#include<stdlib.h>
int main()
{
  int a[10][10],b[10][10],c[10][10],r1,c1,r2,c2,i,j;
  /* clrscr(); */
  /* input total rows and cols */
  printf("Enter total rows and cols of 1st matrix ");
  scanf("%d %d",&r1,&c1);
  printf("Enter total rows and cols in 2nd matrix ");
  scanf("%d %d",&r2,&c2);
  /* condition */
  if(r1==r2 && c1==c2)
  printf("sum can be calculated\n");
  else
  {
  printf("Sum cannot be calculated\n");
  getch();
  exit(1);
  //or
  //return;
  }
  /* input 1st matrix*/
  printf("Enter elements of 1st matrix \n");
  for(i=0;i<r1;i++)
  {
    for(j=0;j<c1;j++)
    {
      printf("Enter [%d][%d] element ",i,j);
      scanf("%d",&a[i][j]);
    }
  }
  /* input 2nd matrix */
  printf("Enter elements of 2nd matrix\n");
  for(i=0;i<r2;i++)
  {
    for(j=0;j<c2;j++)
    {
     printf("Enter [%d][%d] element ",i,j);
     scanf("%d",&b[i][j]);
    }
  }
  //display 1st matrix
  printf("1st matrix is \n");
  for(i=0;i<r1;i++)
  {
    for(j=0;j<c1;j++)
    {
      printf("%4d",a[i][j]);
    }
    printf("\n");
  }
  //display 2nd matrix
  printf("2nd matrix is\n");
  for(i=0;i<r2;i++)
  {
    for(j=0;j<c2;j++)
    {
     printf("%4d",b[i][j]);
    }
    printf("\n");
  }
  //cal and display sum matrix
  printf("sum is \n");
  for(i=0;i<r1;i++)
  {
    for(j=0;j<c1;j++)
    {
      c[i][j]=a[i][j]+b[i][j];
      printf("%4d",c[i][j]);
    }
    printf("\n");
  }
  getch();
  return(0);
}


/* Output */

Case:1

Enter total rows and cols of 1st matrix 2
3
Enter total rows and cols in 2nd matrix 3
6
Sum cannot be calculated


Case:2

Enter total rows and cols of 1st matrix 3
3
Enter total rows and cols in 2nd matrix 3
3
sum can be calculated
Enter elements of 1st matrix
Enter [0][0] element 1
Enter [0][1] element 2
Enter [0][2] element 3
Enter [1][0] element 4
Enter [1][1] element 5
Enter [1][2] element 6
Enter [2][0] element 7
Enter [2][1] element 8
Enter [2][2] element 9
Enter elements of 2nd matrix
Enter [0][0] element 3
Enter [0][1] element 6
Enter [0][2] element 9
Enter [1][0] element 5
Enter [1][1] element 2
Enter [1][2] element 3
Enter [2][0] element 6
Enter [2][1] element 4
Enter [2][2] element 2
1st matrix is
   1   2   3
   4   5   6
   7   8   9
2nd matrix is
   3   6   9
   5   2   3
   6   4   2
sum is
   4   8  12
   9   7   9
  13  12  11

Question:10.
Difference of two matrices (Difference of two double dimension arrays).
Conditions:
The dimensions of both matrix should be same. i.e. number of rows and columns in both should be same.
Sol:

/* Difference of two matrix */
#include<stdio.h>
#include<stdlib.h>
int main()
{
  int a[10][10],b[10][10],c[10][10],r1,c1,r2,c2,i,j;
  /* clrscr(); */
  /* input total rows and cols */
  printf("Enter total rows and cols of 1st matrix ");
  scanf("%d %d",&r1,&c1);
  printf("Enter total rows and cols in 2nd matrix ");
  scanf("%d %d",&r2,&c2);
  /* condition */
  if(r1==r2 && c1==c2)
  printf("Difference can be calculated\n");
  else
  {
  printf("Difference cannot be calculated\n");
  getch();
  exit(1);
  //or
  //return;
  }
  /* input 1st matrix*/
  printf("Enter elements of 1st matrix \n");
  for(i=0;i<r1;i++)
  {
    for(j=0;j<c1;j++)
    {
      printf("Enter [%d][%d] element ",i,j);
      scanf("%d",&a[i][j]);
    }
  }
  /* input 2nd matrix */
  printf("Enter elements of 2nd matrix\n");
  for(i=0;i<r2;i++)
  {
    for(j=0;j<c2;j++)
    {
     printf("Enter [%d][%d] element ",i,j);
     scanf("%d",&b[i][j]);
    }
  }
  //display 1st matrix
  printf("1st matrix is \n");
  for(i=0;i<r1;i++)
  {
    for(j=0;j<c1;j++)
    {
      printf("%4d",a[i][j]);
    }
    printf("\n");
  }
  //display 2nd matrix
  printf("2nd matrix is\n");
  for(i=0;i<r2;i++)
  {
    for(j=0;j<c2;j++)
    {
     printf("%4d",b[i][j]);
    }
    printf("\n");
  }
  //cal and display sum matrix
  printf("Difference between two matrix \n");
  for(i=0;i<r1;i++)
  {
    for(j=0;j<c1;j++)
    {
      c[i][j]=a[i][j]-b[i][j];
      printf("%4d",c[i][j]);
    }
    printf("\n");
  }
  getch();
  return(0);
}


/* Output */

case:1

Enter total rows and cols of 1st matrix 3
2
Enter total rows and cols in 2nd matrix 6
3
Difference cannot be calculated

case:2

Enter total rows and cols of 1st matrix 3
3
Enter total rows and cols in 2nd matrix 3
3
Difference can be calculated
Enter elements of 1st matrix
Enter [0][0] element 2
Enter [0][1] element 3
Enter [0][2] element 6
Enter [1][0] element 5
Enter [1][1] element 9
Enter [1][2] element 6
Enter [2][0] element 3
Enter [2][1] element 2
Enter [2][2] element 5
Enter elements of 2nd matrix
Enter [0][0] element 1
Enter [0][1] element 2
Enter [0][2] element 3
Enter [1][0] element 6
Enter [1][1] element 5
Enter [1][2] element 9
Enter [2][0] element 6
Enter [2][1] element 3
Enter [2][2] element 5
1st matrix is
   2   3   6
   5   9   6
   3   2   5
2nd matrix is
   1   2   3
   6   5   9
   6   3   5
Difference between two matrix
   1   1   3
  -1   4  -3
  -3  -1   0

Question:11.
Product of two matrices (Product of two double dimension arrays).
Conditions:
the number of columns in the 1st matrix should be equal to the number of rows in the 2nd matrix.
Sol:

//matrix product
/*
Product Of two matrix
Condition: number of columns in 1st matrix should be
equal to the numbers of rows in the 2nd matrix.

*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
  int a[10][10],b[10][10],c[10][10],r1,c1,r2,c2,i,j,k;
  /* clrscr(); */
  printf("Enter total rows and cols of 1st matrix ");
  scanf("%d %d",&r1,&c1);
  printf("Enter total rows and cols in 2nd matrix ");
  scanf("%d %d",&r2,&c2);
  if(c1==r2)
  printf("Product can be calculated\n");
  else
  {
  printf("Product cannot be calculated\n");
  getch();
  exit(1);
  //or
  //return;
  }
  printf("Enter elements of 1st matrix \n");
  for(i=0;i<r1;i++)
  {
    for(j=0;j<c1;j++)
    {
      printf("Enter [%d][%d] element ",i,j);
      scanf("%d",&a[i][j]);
    }
  }
  printf("Enter elements of 2nd matrix\n");
  for(i=0;i<r2;i++)
  {
    for(j=0;j<c2;j++)
    {
     printf("Enter [%d][%d] element ",i,j);
     scanf("%d",&b[i][j]);
    }
  }
  printf("1st matrix is \n");
  for(i=0;i<r1;i++)
  {
    for(j=0;j<c1;j++)
    {
      printf("%4d",a[i][j]);
    }
    printf("\n");
  }
  printf("2nd matrix is\n");
  for(i=0;i<r2;i++)
  {
    for(j=0;j<c2;j++)
    {
     printf("%4d",b[i][j]);
    }
    printf("\n");
  }
  /* to calculate product*/
  for(i=0;i<r1;i++)
  {
    for(j=0;j<c2;j++)
    {
      c[i][j]=0;
      for(k=0;k<c1;k++)
      {
	c[i][j]=c[i][j]+a[i][k]*b[k][j];
      }
    }
  }
  printf("product is \n");
  for(i=0;i<r1;i++)
  {
    for(j=0;j<c2;j++)
    {
      printf("%4d",c[i][j]);
    }
    printf("\n");
  }
  getch();
  return(0);
}


/* Output */

case:1

Enter total rows and cols of 1st matrix 2
3
Enter total rows and cols in 2nd matrix 6
5
Product cannot be calculated

case:2

Enter total rows and cols of 1st matrix 3
3
Enter total rows and cols in 2nd matrix 3
3
Product can be calculated
Enter elements of 1st matrix
Enter [0][0] element 1
Enter [0][1] element 2
Enter [0][2] element 3
Enter [1][0] element 4
Enter [1][1] element 5
Enter [1][2] element 6
Enter [2][0] element 3
Enter [2][1] element 2
Enter [2][2] element 6
Enter elements of 2nd matrix
Enter [0][0] element 3
Enter [0][1] element 2
Enter [0][2] element 5
Enter [1][0] element 6
Enter [1][1] element 3
Enter [1][2] element 2
Enter [2][0] element 5
Enter [2][1] element 1
Enter [2][2] element 2
1st matrix is
   1   2   3
   4   5   6
   3   2   6
2nd matrix is
   3   2   5
   6   3   2
   5   1   2
product is
  30  11  15
  72  29  42
  51  18  31

C Language Programming Tutorial

C Language Tutorial Home     Introduction to C Language     Tokens     If Condition      goto statement and Labelname     Switch Statements     For loop     While Loop     Do while loop     break and continue     Functions     Recursion     Inbuild Functions     Storage Classes     Preprocessor     Arrays     Pointers     Structures and Unions     File Handling     Projects