Write a C program to add two matrix using pointers. C program to input two matrix from user and find sum of both matrices using pointers.
Example
Input
Input matrix1: 1 2 3 4 5 6 7 8 9 Input matrix2: 9 8 7 6 5 4 3 2 1
Output
Sum of both matrices: 10 10 10 10 10 10 10 10 10
Required knowledge
Functions, Multi dimensional Array, Pointers, Pointers and Arrays
Matrix addition
Sum of two matrix A and B of size mXn
is defined by
(<strong>A</strong> + <strong>B</strong>) = <strong>A</strong><sub><em>ij</em></sub> + <strong>B</strong><sub><em>ij</em></sub>
(where 1 ≤ i ≤ m
and 1 ≤ j ≤ n
).
How to add two matrices using pointers
In my previous posts, I have already explained how easily you can add two matrices without using pointers. There is not much changes in program except for pointer notation instead of array notation.
To add two matrices in array notation we use
res[i][j] = mat1[i][j] + mat2[i][j]
(where res
is resultant array to store sum of mat1
and mat2
).
Now, instead of using array notation we can use pointer notation. In pointer notation sum of two matrices is written as,
*(*(res + i) + j) = *(*(mat1 + i) + j) + *(*(mat2 + i) + j)
Note: If you are facing difficulties with the pointer notation. Please give a quick view to access two dimensional array using pointer.
Let us apply the above notation with loops and code it in C program.
Program to add two matrix using pointers
/**
* C proogram to add two matrix using pointers.
*/
#include <stdio.h>
#define ROWS 3
#define COLS 3
/* Function declaration to input, add and print matrix */
void matrixInput(int mat[][COLS]);
void matrixPrint(int mat[][COLS]);
void matrixAdd(int mat1[][COLS], int mat2[][COLS], int res[][COLS]);
int main()
{
int mat1[ROWS][COLS], mat2[ROWS][COLS], res[ROWS][COLS];
// Input elements in first matrix
printf("Enter elements in first matrix of size %dx%d: \n", ROWS, COLS);
matrixInput(mat1);
// Input element in second matrix
printf("\nEnter elemetns in second matrix of size %dx%d: \n", ROWS, COLS);
matrixInput(mat2);
// Finc sum of both matrices and print result
matrixAdd(mat1, mat2, res);
printf("\nSum of first and second matrix: \n");
matrixPrint(res);
return 0;
}
/**
* Function to read input from user and store in matrix.
*
* @mat Two dimensional integer array to store input.
*/
void matrixInput(int mat[][COLS])
{
int i, j;
for (i = 0; i < ROWS; i++)
{
for (j = 0; j < COLS; j++)
{
// (*(mat + i) + j) is equal to &mat[i][j]
scanf("%d", (*(mat + i) + j));
}
}
}
/**
* Function to print elements of matrix on console.
*
* @mat Two dimensional integer array to print.
*/
void matrixPrint(int mat[][COLS])
{
int i, j;
for (i = 0; i < ROWS; i++)
{
for (j = 0; j < COLS; j++)
{
// *(*(mat + i) + j) is equal to mat[i][j]
printf("%d ", *(*(mat + i) + j));
}
printf("\n");
}
}
/**
* Function to add two matrices and store their result in given res
* matrix.
*
* @mat1 First matrix to add.
* @mat2 Second matrix to add.
* @res Resultant matrix to store sum of mat1 and mat2.
*/
void matrixAdd(int mat1[][COLS], int mat2[][COLS], int res[][COLS])
{
int i, j;
// Iterate over each matrix elements
for (i = 0; i < ROWS; i++)
{
for (j = 0; j < COLS; j++)
{
// res[i][j] = mat1[i][j] + mat2[i][j]
*(*(res + i) + j) = *(*(mat1 + i) + j) + *(*(mat2 + i) + j);
}
}
}
Output
Enter elements in first matrix of size 3x3: 1 2 3 4 5 6 7 8 9 Enter elemetns in second matrix of size 3x3: 9 8 7 6 5 4 3 2 1 Sum of first and second matrix: 10 10 10 10 10 10 10 10 10
Recommended posts
- Array and matrix programming exercises index.
- C program to access one dimensional array using pointer.
- C program to copy one array to another using pointers.
- C program to swap two arrays using pointer.
- C program to reverse an array using pointers.
- C program to search an element in array using pointers.
- C program to sort array using pointers.