Find determinant of a matrix in C++
In this tutorial, we will learn how to find the determinant of a matrix in C++.
Determinant of a Matrix
Determinant of a Matrix: is a special number that can be calculated from elements of a square matrix ( a matrix having equal no. of rows and columns).
The determinant of a square matrix A is denoted by det A or | A |.
Things to keep in mind:
- Determinant only exists for a square matrix.
The determinant can be a negative number.
For a 1 x 1 Matrix
For a 1 x 1 matrix ( 1 row and 1 column )=>
![]()
The determinant is |A| = a.
For a 2 x 2 Matrix
For a 2 x 2 matrix ( 2 rows and 2 columns )=>


The determinant is |A| = ad – bc.
For a 3 x 3 Matrix
For a 3 x 3 matrix ( 3 rows and 3 columns )=>

The determinant is |A| = a( ei – fh ) – b( di – gf ) + c( dh – eg ).

Cofactor of an element: is a number associated with an element in a square matrix, equal to the determinant of the matrix formed by removing the row and column in which the element appears from the given determinant.
Program to find determinant of a matrix in C++
#include<iostream>
#include<math.h> // used for pow() function. pow() function is used to calculate some power of a number
using namespace std;
int find_determinant(int matrix[3][3], int n)
{
int a,b,c,d,i,j,k;
int temp_determinant=0,subcofactor_matrix[3][3],cofactor_i,cofactor_j;
if(n==1) // if order of a matrix is 1
return matrix[0][0];
if(n==2) // if order of a matrix is 2
{
a=matrix[0][0];
b=matrix[0][1];
c=matrix[1][0];
d=matrix[1][1];
return (a*d - b*c);
}
if(n==3) // if order of a matrix is 3
{
// loop for 0th row elements. Because for finding determinant of a matrix we only need to find out cofactors of 0th row elements
for(k=0; k<n; k++)
{
cofactor_i = 0;
//Here, we have started loop from 1. Because we don't want to consider elements of same row for finding cofactor of an element
for (i=1; i<n; i++)
{
cofactor_j = 0;
for (j=0; j<n; j++)
{
if (j!=k) // we have used this codition. because we don't want to consider elements of same column for finding cofactor of an element
{
//forming sub_cofactor matrix
subcofactor_matrix[cofactor_i][cofactor_j] = matrix[i][j];
cofactor_j++;
}
}
cofactor_i++;
}
// calculating determinant of a matrix
temp_determinant = temp_determinant + (pow(-1, k) * matrix[0][k] * find_determinant( subcofactor_matrix, n - 1 ));
}
}
return temp_determinant;
}
int main()
{
int i,j,n,determinant,matrix[3][3];
cout<<"Enter order of a matrix (1/2/3): ";
cin>>n;
while( n<1 || n>3 ) // if mentioned order is not in between 1 and 3
{
cout<<"\nPlease..Enter order of a matrix in 1 to 3: ";
cin>>n;
}
cout<<"\nEnter the elements of a matrix: "; // Taking elements of matrix as a input
for(i=0; i<n; i++)
for(j=0; j<n; j++)
cin>>matrix[i][j];
cout<<"\nEntered matrix:\n"; // Displaying entered matrix
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
cout<<matrix[i][j]<<" ";
}
cout<<"\n";
}
determinant=find_determinant(matrix,n); // function call to find_determinant
cout<<"\nDeterminant of the Entered matrix is: "<<determinant;
return 0;
}Input/Output:
Enter order of a matrix (1/2/3): 3 Enter the elements of a matrix: 2 -3 1 2 0 -1 1 4 5 Entered matrix: 2 -3 1 2 0 -1 1 4 5 Determinant of the Entered matrix is: 49
Time Complexity
O(n³), where n is an order of a matrix.
You may also read:
Very easy to understand!!
Good technique TO solve the question. I was trying to solve this question but with more complicated algorithm