C and C++ Program to Find Inverse of a Matrix

Here you will get C and C++ program to find inverse of a matrix.

We can obtain matrix inverse by following method.

  • First calculate deteminant of matrix.
  • Then calculate adjoint of given matrix. Adjoint can be obtained by taking transpose of cofactor matrix of given square matrix.
  • Finally multiply 1/deteminant by adjoint to get inverse.

The formula to find inverse of matrix is given below.

Matrix Inverse Formula

You can watch below video to learn how inverse is calculated.

In below program I have calculated the inverse of 3×3 matrix.

C Program to Find Inverse of a Matrix

#include<stdio.h>

int main(){
	int mat[3][3], i, j;
	float determinant = 0;
	
	printf("Enter elements of matrix row wise:\n");
	for(i = 0; i < 3; i++)
		for(j = 0; j < 3; j++)
           scanf("%d", &mat[i][j]);
	
	printf("\nGiven matrix is:");
	for(i = 0; i < 3; i++){
		printf("\n");
		
		for(j = 0; j < 3; j++)
			printf("%d\t", mat[i][j]);
	}
	
	//finding determinant
	for(i = 0; i < 3; i++)
		determinant = determinant + (mat[0][i] * (mat[1][(i+1)%3] * mat[2][(i+2)%3] - mat[1][(i+2)%3] * mat[2][(i+1)%3]));
	
	printf("\n\ndeterminant: %f\n", determinant);
	
	printf("\nInverse of matrix is: \n");
	for(i = 0; i < 3; i++){
		for(j = 0; j < 3; j++)
			printf("%.2f\t",((mat[(j+1)%3][(i+1)%3] * mat[(j+2)%3][(i+2)%3]) - (mat[(j+1)%3][(i+2)%3] * mat[(j+2)%3][(i+1)%3]))/ determinant);
		
		printf("\n");
	}

   return 0;
}

C++ Program to Find Inverse of a Matrix

#include<iostream>

using namespace std;

int main(){
	int mat[3][3], i, j;
	float determinant = 0;
	
	cout<<"Enter elements of matrix row wise:\n";
	for(i = 0; i < 3; i++)
		for(j = 0; j < 3; j++)
           cin>>mat[i][j];
	
	printf("\nGiven matrix is:");
	for(i = 0; i < 3; i++){
		cout<<"\n";
		
		for(j = 0; j < 3; j++)
			cout<<mat[i][j]<<"\t";
	}
	
	//finding determinant
	for(i = 0; i < 3; i++)
		determinant = determinant + (mat[0][i] * (mat[1][(i+1)%3] * mat[2][(i+2)%3] - mat[1][(i+2)%3] * mat[2][(i+1)%3]));
	
	cout<<"\n\ndeterminant: "<<determinant;
	
	cout<<"\n\nInverse of matrix is: \n";
	for(i = 0; i < 3; i++){
		for(j = 0; j < 3; j++)
			cout<<((mat[(j+1)%3][(i+1)%3] * mat[(j+2)%3][(i+2)%3]) - (mat[(j+1)%3][(i+2)%3] * mat[(j+2)%3][(i+1)%3]))/ determinant<<"\t";
		
		cout<<"\n";
	}

   return 0;
}

Output

C and C++ Program to Find Inverse of a Matrix

17 thoughts on “C and C++ Program to Find Inverse of a Matrix”

  1. Someone once need help

    thank you very much for your example, now i can go to bed easily =D . Really help my task to do inverse matrices from read files

  2. Write a program in C++ to find the minor of every elements of a square matrix of any order.
    The order of the square matrix should be entered by the user.

  3. I did not understand this can you explain me clear ‘
    cout<<((mat[(j+1)%3][(i+1)%3] * mat[(j+2)%3][(i+2)%3]) – (mat[(j+1)%3][(i+2)%3] * mat[(j+2)%3][(i+1)%3]))/ determinant<<"\t";

    what is J+1, i+1 and so on?

  4. So wise! I was trying to implement the same thing by calculating each element manually and that could take forever.. Thank you so much!

  5. May for such a simple and awesome code I’ve wasted hours in searching from sites to sites.
    Live long sir!

  6. Easy to Understand Code It is just Like what the teacher taught me during jee preparation’;
    I want to solve it using the rank method

  7. lol im actually confused on how the c++ program is outputting the inverse array in decimal form when the array itself is an int datatype

Leave a Comment

Your email address will not be published. Required fields are marked *