Код:

//вот метод гаусса
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>
#pragma hdrstop
#pragma argsused
//using namespace::std;
const int dim=20;
int InvMatrG(int n, float(*a)[dim], float e,float d)
{int i,j,k;
float y,w;
float b[dim],c[dim];
int z[dim];
d=1;
for(j=0;j<n;j++)
x[j]=j;
for (i=0;i<n;i++)
{k=i;
y=a[i][i];
if (fabs(w)>fabs(y))
{k=j;
y=w;}}
d*=y;
if (fabs(y)<e)
{cout<<"matrica virojdena";
getch();
}
for (j=0;j<n;j++){
c[j]=a[j][k];
a[j][k]=a[j][i];
a[j][i]=-c[j]/y;
a[i][j]=a[i][j]/y;
b[j]=a[i][j];}
a[i][j]=1/y;
j=z[i];
z[i]=z[k];
z[k]=j;
for (k=0;k<n;k++)
if(k!=i)
for(j=0;j<n;j++)
if (j!=i)
a[k][i]-=b[j]*c[k];}
for (i=0;i<n;i++){
k=z[i];
if (k!=i){
for (j=0;j<n;j++)
{w=a[i][j];
a[i][j]=a[k][j];
a[k][j]=w;}
j=z[i];
z[i]=z[k];
d=-d;
}}}
int MatrIn (int n,float(*a)[dim]){
int i,j;
for(i=0;i<n;i++)
for (j=0;j<n;j++)
cin>>a[i][j];}
int MatrOut(intn,float(*a)[dim]){
int i,j;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
cout<<a[i][j]<<" ";}
void main()
{int n;
float matr[dim][dim];
float d;
cout<<"\n vvedite razmernost'";
cin>>n;
cout<<"\n vvedite elemeti";
MatrIn(n,(*matr)[n]);
cout"\n tochnost'";
cin>>e;
InvMatrG(n,matr[][n],e,d);
cout"\n obratnaya matrica";
MatrOut(n,matr[][n]);
getch();
}
//а вот
//Нахождение обратной матрицы методом расширенной матрицы
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>
#pragma hdrstop
#pragma argsused
const int dim1=20;
const int dim2=40;
float **a,**a1;
int n;
//vvod matrici
int MatrIn()
{int i,j;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
cin>>a[i][j];
}
//obraschenie matrici
int invMatr(float e)
{
int i,j,k,n1;
float f,f1;
float matr[20][40];
n1=2*n;
for (int i=0;i<n;i++)
for (j=0;j<n1;j++)
if (j<n)
matr [i][j]=a[i][j];
else
if (j==n+1)
matr[i][j]=1;
else
matr [i][j]=0;
for (int i=0;i<n;i++)
{k=i;
f1=matr[i][j];
while (fabs(f1)<e)
{if (k<n)
{
k++;
f1=matr[k][i];
}
else
{
cout<<"matrica virojdena";
gatch();
}
for (j=i;j<n1;j++)
{
f=matr[k][j];
matr[k][j]=matr[i][j];
matr[i][j]=f/f1;
}
for (k=0;k<n;k++)
if (k!=i)
for (j=n1-1;j>=i;j--)
matr[k][j]=matr[k][j]-matr[i][j]*matr[k][j];
}
for (i=0;i<n;i++)
for (j=0;j<n;j++)
a[i][j]=matr[i][j+n];
}
}
//vivod obratnoy matrici
int MatrOut()
{
int i,j;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
cout<<a1[i][j]<<" ";
}
//glavnaya proga
void main()
{
float e;
cout<<"vvedite razm matrici";
cin>>n;
cout<<"vvedite cherez probel elementi metrici";
a=new float*[n];
MatrIn();
a1=new float*[n];
for (int i=0;i<n;i++)
a1[i]=new float[n];
cout<<"vvedite tochnost' vichisleniya";
cin>>e;
InvMatr(e);
cout<<"obratnaya matrica";
MatrOut();
getch();
}