# 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 Aor| 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