C++ Program to Subtract Two Matrices

In this article, you will learn and get code to subtract two matrices using a C++ program. Here is the list of programs for matrix subtraction:

However, if you are unfamiliar with the topic, you should read the article on matrix subtraction before proceeding with these programs.

Note: In matrix subtraction, the same row and column elements of the second matrix get subtracted from the same row and column elements of the first matrix. Let me give you an example:

1  2  3     0  1  3     1  1  0
4  5  6  -  3  1  2  =  1  4  4
7  8  9     1  2  3     6  6  6

As you can see, element (0) of the first row, first column of the second matrix is subtracted from the element (1) of the first row, first column of the first matrix (1). Similarly, element (1) of the second matrix is subtracted from element (2) of the first matrix, and so on.

Subtract Two 3*3 Matrices in C++

To subtract two matrices in C++ programming, you have to ask the user to enter the two 3*3 matrices. That is, the first matrix has nine elements (numbers) and the second matrix has nine elements. Then subtract the second matrix from the first as shown in the program given below:

#include<iostream>
using namespace std;
int main()
{
    int matOne[3][3], matTwo[3][3], matSub[3][3], i, j;
    cout<<"Enter 9 Elements for First Matrix: ";
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
            cin>>matOne[i][j];
    }
    cout<<"Enter 9 Elements for Second Matrix: ";
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
            cin>>matTwo[i][j];
    }
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
            matSub[i][j] = matOne[i][j] - matTwo[i][j];
    }
    cout<<"\nThe New Matrix (Subtraction Result) is:\n";
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
            cout<<matSub[i][j]<<"  ";
        cout<<endl;
    }
    cout<<endl;
    return 0;
}

This program was built and runs under the Code::Blocks IDE. Here is its sample run:

C++ program subtract two matrices

Now supply inputs, say 9, 8, 7, 6, 5, 4, 3, 2, and 1 as 9 elements for the first matrix and 8, 7, 6, 5, 4, 3, 2, 1, and 0 as 9 elements for the second matrix. Here is the sample output after subtracting two given matrices:

subtract two matrices c++

When the user enters 9, 8, 7, 6, 5, 4, 3, 2, and 1 as the 9 elements for the first matrix, then it gets stored in matOne[][] in this way:

  • matOne[0][0]=9
  • matOne[0][1]=8
  • matOne[0][2]=7
  • matOne[1][0]=6
  • matOne[1][1]=5
  • and so on up until
  • matOne[2][2]=1

Whereas the 9 elements, say 8, 7, 6, 5, 4, 3, 2, 1, and 0 get stored in the second matrix, say matTwo[][], in a similar way, that is:

  • matTwo[0][0]=8
  • matTwo[0][1]=7
  • matTwo[0][2]=6
  • and so on upto
  • matTwo[2][2]=0

Now the matrix subtraction with the following block of code gets performed:

for(i=0; i<3; i++)
{
    for(j=0; j<3; j++)
        matSub[i][j] = matOne[i][j] - matTwo[i][j];
}

When we evaluate this block of code, then its dry run goes like this:

  • matSub[0][0] = matOne[0][0] - matTwo[0][0]
  • matSub[0][1] = matOne[0][1] - matTwo[0][1]
  • matSub[0][2] = matOne[0][2] - matTwo[0][2]
  • matSub[1][0] = matOne[1][0] - matTwo[1][0]
  • matSub[1][1] = matOne[1][1] - matTwo[1][1]
  • matSub[1][2] = matOne[1][2] - matTwo[1][2]
  • matSub[2][0] = matOne[2][0] - matTwo[2][0]
  • matSub[2][1] = matOne[2][1] - matTwo[2][1]
  • matSub[2][2] = matOne[2][2] - matTwo[2][2]

Now, on putting the number or value for each:

  • matSub[0][0] = 9 - 8
  • matSub[0][0] = 8 - 7
  • matSub[0][0] = 7 - 6
  • matSub[0][0] = 6 - 5
  • matSub[0][0] = 5 - 4
  • matSub[0][0] = 4 - 3
  • matSub[0][0] = 3 - 2
  • matSub[0][0] = 2 - 1
  • matSub[0][0] = 1 - 0

As you can see, the subtraction result is always 1; thus, 1 is stored in every index of matSub[][].

Subtract two matrices and print A-B=C

This program is similar to the previous program. But there is an extra feature included in this program. That extra feature is that this program shows the generalized way of doing matrix subtraction with A-B=C. Here, A is the first matrix, B is the second matrix, and C is the subtraction result of both matrices.

#include<iostream>
using namespace std;
int main()
{
    int matOne[3][3], matTwo[3][3], matSub[3][3], i, j;
    cout<<"Enter 9 Elements for First Matrix: ";
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
            cin>>matOne[i][j];
    }
    cout<<"Enter 9 Elements for Second Matrix: ";
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
            cin>>matTwo[i][j];
    }
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
            matSub[i][j] = matOne[i][j] - matTwo[i][j];
    }
    cout<<"\nSubtraction of Two Matrix is:\n";
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
            cout<<matOne[i][j]<<"  ";
        if(i==1)
            cout<<"  -\t";
        else
            cout<<"\t";
        for(j=0; j<3; j++)
            cout<<matTwo[i][j]<<"  ";
        if(i==1)
            cout<<"  =\t";
        else
            cout<<"\t";
        for(j=0; j<3; j++)
            cout<<matSub[i][j]<<"  ";
        cout<<endl;
    }
    cout<<endl;
    return 0;
}

Here is its sample run with user input 1, 2, 3, 4, 5, 6, 7, 8, 9 as first matrix elements, and 0, 1, 2, 1, 2, 3, 1, 5, 3 as second matrix elements:

c++ matrix subtraction

Subtract two matrices of the given size

This program allows the user to define the size of the matrix before entering the elements. The rest of the program is similar to the first program in this article:

#include<iostream>
using namespace std;
int main()
{
    int rowOne, colOne, rowTwo, colTwo, i, j;
    int matOne[10][10], matTwo[10][10], matSub[10][10];
    cout<<"Enter Row and Column Size for First Matrix: ";
    cin>>rowOne>>colOne;
    cout<<"Enter Row and Column Size for Second Matrix: ";
    cin>>rowTwo>>colTwo;
    if(rowOne==rowTwo && colOne==colTwo)
    {
        cout<<"\nEnter "<<rowOne*colOne<<" Elements for First Matrix: ";
        for(i=0; i<rowOne; i++)
        {
            for(j=0; j<colOne; j++)
                cin>>matOne[i][j];
        }
        cout<<"\nEnter "<<rowTwo*colTwo<<" Elements for Second Matrix: ";
        for(i=0; i<rowTwo; i++)
        {
            for(j=0; j<colTwo; j++)
                cin>>matTwo[i][j];
        }
        cout<<"\nThe New Matrix (Subtraction Result) is:\n";
        for(i=0; i<rowOne; i++)
        {
            for(j=0; j<colOne; j++)
            {
                matSub[i][j] = matOne[i][j] - matTwo[i][j];
                cout<<matSub[i][j]<<"  ";
            }
            cout<<endl;
        }
    }
    else
        cout<<"\nRow and Column Size of Both Matrix Mismatched!";
    cout<<endl;
    return 0;
}

Now supply the following inputs:

  • 2 as row size and 3 as column size for the first matrix
  • 2 as row size and 3 as column size for the second matrix
  • 1, 2, 3, 4, 5, 6 as 6 elements for the first matrix
  • 0, 1, 1, 4, 2, 3 as 6 elements for the second matrix

After supplying these inputs, here is the sample output:

c++ subtract two matrices of given size

The same program in different languages

C++ Quiz


« Previous Program Next Program »


Follow/Like Us on Facebook


Subscribe Us on YouTube