Tuesday, August 16, 2011

Sum of two matrices using two dimensional array in C

Matrix is the perfect example of a two-dimensional array. It has row and column. A row represents one dimension and column represents the second dimension. For example matrix[4][5], it has 4 rows, each row consisting 5 elements i.e matrix[0] has 5 elements,    matrix[1] has 5 elements and so on. In this example, two matrices are added and the result is displayed. Addition is done with corresponding elements of individual matrix i.e. matrix1[0][0] is added with matrix2[0][0].
The complete source code and output are given here….(The code is also available on GitHub). Here are related articles about matrix operation.

  1. Multiplication of Two Matrices in C


Source Code
//Sum of two matrices using two dimensional array

#include <stdio.h>
#include <stdlib.h>

int main(){
 int matrix1[10][10], matrix2[10][10], sum[10][10], i, j, m,n,p,q;
 printf("Enter the order of first matrix: ");
 scanf("%d%d",&m,&n);
 printf("Enter the order of second matrix: ");
 scanf("%d%d",&p,&q);

 if(m!=p && n!=q){
  printf("Order of matrix did not matched!!");
  exit(0);
 }


 printf("Enter first matrix: \n");
 for(i = 0 ; i < m; i++){
  for(j = 0; j < n; j++)
   scanf("%d", &matrix1[i][j]);
 }


 printf("Enter second matrix: \n");
 for(i = 0 ; i < p; i++){
  for(j = 0; j < q; j++)
   scanf("%d", &matrix2[i][j]);
 }


 for(i = 0 ; i < m; i++){
  for(j = 0; j < n; j++)
  sum[i][j] = matrix1[i][j] + matrix2[i][j];
 }


 printf("The sum of the matrix is :\n");
 for(i = 0 ; i < m; i++){
  for(j = 0; j < n; j++){
   printf("%d", sum[i][j]);
   printf("\t");
  }
  printf("\n");
 }

 return 0;
}



matrixre>
Output

The above program allocates the fixed memory to store the matrix. The program below shows the dynamic memory allocation to allocates the memory to store the matrix.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
 int rows, columns, i, j;
 int **matrix1, **matrix2;

 if (argc != 3) {
  printf("Usage: outputfile rows columns\n");
  exit(1);
 }

 rows = atoi(argv[1]);
 columns = atoi(argv[2]);

 // allocate memory for matrices
 matrix1 = (int**) malloc (sizeof(int*) * columns);
 for (i = 0; i < columns; i++) {
  matrix1[i] = (int*) malloc(sizeof(int*) * rows);
 }

 matrix2 = (int**) malloc (sizeof(int*) * columns);
 for (i = 0; i < columns; i++) {
  matrix2[i] = (int*) malloc(sizeof(int*) * rows);
 }

 // get matrices from user
 printf("Enter the first matrix: \n");
 for(i = 0 ; i < rows; i++)
        for(j = 0; j < columns; j++)
            scanf("%d", &matrix1[i][j]);
    
    printf("Enter the second matrix: \n");
 for(i = 0 ; i < rows; i++)
        for(j = 0; j < columns; j++)
            scanf("%d", &matrix2[i][j]);

    // add two matrices
    for(i = 0 ; i < rows; i++){
        for(j = 0; j < columns; j++)
            matrix2[i][j] = matrix1[i][j] + matrix2[i][j];
    }

    // display the result
    printf("The sum of the matrix is :\n");
    for(i = 0 ; i < rows; i++){
        for(j = 0; j < columns; j++){
            printf("%d ", matrix2[i][j]);
        }
        printf("\n");
    }

    return 0;

}

6 comments:

  1. Thanks nice set of programs for beginners

    ReplyDelete
  2. nice
    it is very easy to understand.
    thank u.. sir

    ReplyDelete
  3. how can i write an algorithm for this problem ??? may i know sir

    ReplyDelete