Program:
#include<stdio.h>
#include<math.h>
void readmatrix(int x[10][10],int);
void showmatrix(int g[10][10],int);
void transpose(int y[10][10],int);
int det(int a[10][10],int);
void inv(int a[10][10],int);
main()
{
int a[10][10],m,p;
printf("Enter the order of the matrix:\n");
scanf("%d",&m);
printf("Enter the elements for the matrix:\n");
readmatrix(a,m);
printf("Matrix:\n");
showmatrix(a,m);
printf("Transpose of the above matrix:\n");
transpose(a,m);
p=det(a,m);
printf("\nDetarminant=%d\n",p);
inv(a,m);
}
void transpose(int y[10][10],int m)
{
int i,j;
int t[10][10];
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
t[i][j]=y[j][i];
}
}
showmatrix(t,m);
}
int det(int a[10][10],int m)
{
int i,j,k,l,dtr,b[10][10];
if(m==1)
return a[0][0];
dtr=0;
for(i=0;i<m;i++)
{
for(j=0;j<m-1;j++)
{
for(k=0,l=0;k<m-1;++k,++l)
{
if(i==l)
++l;
b[j][k]=a[j+1][l];
}
}
dtr+=pow(-1,i)*a[0][i]*det(b,m-1);
}
return dtr;
}
void inv(int a[10][10],int m)
{
int i,j,k,l,p,q,b[10][10],c[10][10],d;
float in[10][10];
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
for(k=0,p=0;k<m-1;++k,++p)
{
for(l=0,q=0;l<m-1;++l,++q)
{
if(p==i)
++p;
if(q==j)
++q;
b[k][l]=a[p][q];
}
}
c[i][j]=pow(-1,i+j)*det(b,m-1);
}
}
d=det(a,m);
printf("\n\nThe inverse matrix\n\n");
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
in[i][j]=c[i][j];
in[i][j]/=d;
printf("%f\t",in[i][j]);
}
printf("\n");
}
}
void readmatrix(int x[10][10],int ord)
{
int i,j;
for(i=0;i<ord;i++)
{
for(j=0;j<ord;j++)
{
scanf("%d",&x[i][j]);
}
}
}
void showmatrix(int g[10][10],int ord)
{
int i,j;
for(i=0;i<ord;i++)
{
for(j=0;j<ord;j++)
{
printf("%d\t",g[i][j]);
}
printf("\n");
}
}
Output:
nn@linuxmint ~ $ gcc c22.c -lm
nn@linuxmint ~ $ ./a.out
Enter the order of the matrix:
2
Enter the elements for the matrix:
4
2
1
3
Matrix:
4 2
1 3
Transpose of the above matrix:
4 1
2 3
Detarminant=10
The inverse matrix
0.300000 -0.100000
-0.200000 0.400000
nn@linuxmint ~ $
#include<stdio.h>
#include<math.h>
void readmatrix(int x[10][10],int);
void showmatrix(int g[10][10],int);
void transpose(int y[10][10],int);
int det(int a[10][10],int);
void inv(int a[10][10],int);
main()
{
int a[10][10],m,p;
printf("Enter the order of the matrix:\n");
scanf("%d",&m);
printf("Enter the elements for the matrix:\n");
readmatrix(a,m);
printf("Matrix:\n");
showmatrix(a,m);
printf("Transpose of the above matrix:\n");
transpose(a,m);
p=det(a,m);
printf("\nDetarminant=%d\n",p);
inv(a,m);
}
void transpose(int y[10][10],int m)
{
int i,j;
int t[10][10];
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
t[i][j]=y[j][i];
}
}
showmatrix(t,m);
}
int det(int a[10][10],int m)
{
int i,j,k,l,dtr,b[10][10];
if(m==1)
return a[0][0];
dtr=0;
for(i=0;i<m;i++)
{
for(j=0;j<m-1;j++)
{
for(k=0,l=0;k<m-1;++k,++l)
{
if(i==l)
++l;
b[j][k]=a[j+1][l];
}
}
dtr+=pow(-1,i)*a[0][i]*det(b,m-1);
}
return dtr;
}
void inv(int a[10][10],int m)
{
int i,j,k,l,p,q,b[10][10],c[10][10],d;
float in[10][10];
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
for(k=0,p=0;k<m-1;++k,++p)
{
for(l=0,q=0;l<m-1;++l,++q)
{
if(p==i)
++p;
if(q==j)
++q;
b[k][l]=a[p][q];
}
}
c[i][j]=pow(-1,i+j)*det(b,m-1);
}
}
d=det(a,m);
printf("\n\nThe inverse matrix\n\n");
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
in[i][j]=c[i][j];
in[i][j]/=d;
printf("%f\t",in[i][j]);
}
printf("\n");
}
}
void readmatrix(int x[10][10],int ord)
{
int i,j;
for(i=0;i<ord;i++)
{
for(j=0;j<ord;j++)
{
scanf("%d",&x[i][j]);
}
}
}
void showmatrix(int g[10][10],int ord)
{
int i,j;
for(i=0;i<ord;i++)
{
for(j=0;j<ord;j++)
{
printf("%d\t",g[i][j]);
}
printf("\n");
}
}
Output:
nn@linuxmint ~ $ gcc c22.c -lm
nn@linuxmint ~ $ ./a.out
Enter the order of the matrix:
2
Enter the elements for the matrix:
4
2
1
3
Matrix:
4 2
1 3
Transpose of the above matrix:
4 1
2 3
Detarminant=10
The inverse matrix
0.300000 -0.100000
-0.200000 0.400000
nn@linuxmint ~ $