/* DINH THUC VA MA TRAN NGHICH DAO */
#include<stdio.h>
#include<conio.h>
void main()
{
int i,j,k,m,n,na,dau=1;
double det,x,tam;
double a[50][50],b[50][50];
clrscr();
printf("\n CHAO MUNG DEN VOI CHUONG TRINH TINH DINH THUC VA MA TRAN NGHICH DAO"); na=2*n;//so cot ma tran chuyen tiep.
//Nhap ma tran A.-------------------------------
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
}
//Tao ma tran lien ket.---------------------------
for(i=0;i<n;i++)
for(j=n;j<na;j++)
{
if(i==(j-n)) a[i][j]=1;
else a[i][j]=0;
}
//Ham giai phuong trinh.--------------------
//Dung phep BDSC dua Aij ve ma tran cheo.
for(j=0;j<n;j++)
{
for(i=n-1;i>=j;i--)
{
if(a[i][j]==0) continue;//Neu phan tu a bang 0 thi tang i.
if((i>j)&&(a[i][j]!=0))
{
k=i-1;
while((k>=j)&&(a[k][j]==0)) k--;//Xet cac phan tu a khac 0 tren cung cot j
if(k<j)
{
//Doi cho dong thu i va j cho ca ma tran mo rong.
for(m=0;m<na;m++)
{
tam=a[i][m];
a[i][m]=a[j][m];
a[j][m]=tam;
}
dau=-dau;
}
if((k>=j)&&(k>=0))
{
x=-a[i][j]/a[k][j];
//Nhan dong thu k cho x roi cong vao dong thu i.
for(m=0;m<na;m++)
a[i][m]+=a[k][m]*x;
}
}
}
}
for(j=n-1;j>=0;j--)
{
for(i=0;i<=j;i++)
{
if(a[i][j]==0) continue;
if((i<j)&&(a[i][j]!=0))
{
k=i+1;
while((k<=j)&&(a[k][j]==0)) k++;
if((k<=j)&&(k<na))
{
x=-a[i][j]/a[k][j];
//Nhan dong thu k voi x roi cong vao dong thu i.
for(m=0;m<na;m++)
a[i][m]+=a[k][m]*x;
}
}
}
}
//Tinh dinh thuc.------------------------------------
det=1;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(i==j) det*=a[i][j];
printf("\n Det=%5.2lf",det
*dau
); //Tinh ma tran nghich dao.-----------------------
if(det!=0)
{
for(i=0;i<n;i++)
for(j=n;j<na;j++)
{
a[i][j]=a[i][j]/a[i][i];
}
for(i=0;i<n;i++)
for(j=n;j<na;j++)
{
b[i][j-n]=a[i][j];
}
//In ra ma tran nghich dao.-----------------
printf("\n MA TRAN NGHICH DAO CUA A:\n"); for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
}
}
else printf("\n KHONG CO MA TRAN NGHICH DAO."); printf("\n GOOBYE.CHUC MOI NGUOI VUI VE!"); getch();
}
//6:01 PM 4/22/2010