codescracker
c

C Program to Subtract Two Matrices



« Previous Program Next Program »

In this article, you will learn and get code on matrix subtraction in C. There are two programs available here:

How Matrix Subtraction gets Performed ?

There is a separate tutorial on it, that is, Matrix Subtraction. There in very short time, you will get the complete knowledge on how a matrix subtraction gets performed. But for now the subtraction of any two 3*3 matrix gets performed like:

matSub[i][j] = mat1[i][j] - mat2[i][j];

where i and j indicates row and column. On putting the value of i and j with 0:

matSub[0][0] = mat1[0][0] - mat2[0][0];

Above statement shows, the first number (or element) of second matrix gets subtracted from the first number of first matrix and initialized as the first element of third matrix (that holds the subtraction result of both the matrix).

Note - The number at 0th row and 0th column of first matrix gets subtracted with number at 0th row and 0th column of second matrix. And its subtraction result gets initialized as the the value of 0th row and 0th column of resultant matrix. Same subtraction process applied for all the elements

3*3 Matrix Subtraction in C

To subtract two matrices in C programming, you have to ask from user to enter the two 3*3 matrices. That is, enter 9 elements for first matrix and then 9 elements for second matrix. Now second matrix from first gets subtracted. Print the subtraction result on output as shown in the program given below.

// Subtract Two Matrices in C
// ----codescracker.com----

#include<stdio.h>
#include<conio.h>
int main()
{
    int mat1[3][3], mat2[3][3], matSub[3][3], i, j;
    printf("Enter First 3*3 Matrix Elements: ");
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
            scanf("%d", &mat1[i][j]);
    }
    printf("Enter Second 3*3 Matrix Elements: ");
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
            scanf("%d", &mat2[i][j]);
    }
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
            matSub[i][j] = mat1[i][j] - mat2[i][j];
    }
    printf("\nThe Subtraction Result is:\n");
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
            printf("%d  ", matSub[i][j]);
        printf("\n");
    }
    getch();
    return 0;
}

This program was build and run under Code::Blocks IDE. Here is its sample run:

c program subtract two matrices

Now enter any 9 numbers for first matrix and then 9 numbers for second matrix. Then press ENTER key to see the subtraction of two given matrix. The subtraction gets performed in a way that the first matrix gets subtracted from second one:

matrix subtraction in c

If you enters 9 elements for first matrix say mat1[][]. Then these elements stored in a way that:

Same happened with second matrix. Now the subtraction of two matrix using for loop goes like:

Here [0][0] means very first element corresponding to the matrix written before it. And [0][1] means second element, [1][0] means fourth element, [2][2] means last element

To learn about the working of for loop, then refer to the separate tutorial on for Loop in C.

The for loop works like, first and only once its initialization part executes. Then checks the condition, if condition evaluates to be true, then program flow executes all the statement present as the block of this for loop. Then update the loop variable or program flow goes to updatation part. After updatated value, checks the condition. If it again evaluates to be true, then program flow again does the same job of executing its block of code. The process continues until the condition evaluates to be false

Subtract Two Matrices of Desired Size

This program has an extra feature. That is, it allows the user to define the size for both the matrices.

// Subtract Two Matrices of Desired Size in C
// ----codescracker.com----

#include<stdio.h>
#include<conio.h>
int main()
{
    int rowSize1, colSize1, rowSize2, colSize2, i, j;
    int mat1[10][10], mat2[10][10], matSub[10][10];
    printf("Enter Row and Column Size of First Matrix: ");
    scanf("%d%d", &rowSize1, &colSize1);
    printf("Enter Row and Column Size of Second Matrix: ");
    scanf("%d%d", &rowSize2, &colSize2);
    if(rowSize1==rowSize2 && colSize1==colSize2)
    {
        printf("\nEnter First %d*%d Matrix Elements: ", rowSize1, colSize1);
        for(i=0; i<rowSize1; i++)
        {
            for(j=0; j<colSize1; j++)
                scanf("%d", &mat1[i][j]);
        }
        printf("Enter Second %d*%d Matrix Elements: ", rowSize2, colSize2);
        for(i=0; i<rowSize2; i++)
        {
            for(j=0; j<colSize2; j++)
                scanf("%d", &mat2[i][j]);
        }
        printf("\nThe Subtraction Result is:\n");
        for(i=0; i<rowSize1; i++)
        {
            for(j=0; j<colSize1; j++)
            {
                matSub[i][j] = mat1[i][j] - mat2[i][j];
                printf("%d  ", matSub[i][j]);
            }
            printf("\n");
        }
    }
    else
        printf("\nSubtraction can't be Performed!");
    getch();
    return 0;
}

Here is its sample run:

subtract two matrices of desired size c

Note = If size mismatched, then subtraction can't be perfomed. That is, if either row size of first matrix is not equal to row size of second matrix or column size of first matrix is not equal to column size of second matrix, then subtraction can't be performed.

In above program, at the time of subtraction, we have printed the element after each subtraction.

Same Program in Other Languages

C Online Test


« Previous Program Next Program »



© Copyright 2021. All Rights Reserved.

CodesCracker