Primeiro voce precisa escalonar a matriz, quando você troca as linhas e colunas muda o determinante... ou seja aplicar isso ao seu codigo.
Quando a matriz estiver escalonada voce so precisa multiplicar a diagonal principal e acabou seu problem, vou colocar uma parte do codigo aqui se for ajudar
nt main(int argc, char *argv[]) {
int e,k,j,i,l,c,M[10][10],Z[10],P[10],mdc[10],senha;
double detn,detd,aux;
senha=1;
double Re;
while(senha!=0)
{
detn=1;
detd=1;
printf("Escreva as Dimensoes da Matrix a ser escalonada");
scanf("%d%d",&l,&c);
while(l<1||c<1)
{
printf("Escreva as Dimensoes da Matrix a ser escalonada Maior que zero e menor que 10");scanf("%d%d",&l,&c);
}
while(l>10||c>10)
{
printf("Escreva as Dimensoes da Matrix a ser escalonada Maior que zero e menor que 10");scanf("%d%d",&l,&c);
}
Ler_matrix(l,c,M);
k=1;
while(k<l)
{//printf("k0=%d",k);
//system("pause");
Imprimir_matrix(l,c,M);//system("pause");
printf("\n");
//contar zero
i=1;
while(i<l)
{Contar_zeros(l,c,M,Z);
if(Z>Z[i+1])
{
Trocar_linhas(l,c,M,i);
detn=detn*-1;
Imprimir_matrix(l,c,M);
printf("\n");
i=0;
}
i=i+1;
}
i=1;
while(i<l)
{
Procurar_Pivos(l,c,M,P);
if(Z==Z[i+1]&&P!=0&&P<P[i+1])
{
Trocar_linhas(l,c,M,i);
detn=detn*-1;
Imprimir_matrix(l,c,M);
printf("\n");
i=0;
}
i=i+1;
}
Procurar_Pivos(l,c,M,P);
Contar_zeros(l,c,M,Z);
//printf("Zeros[%d]=%d Zeros[%d]=%d\n",k,Z[k],k+1,Z[k+1]);
if(Z[k]==Z[k+1]&&Z[k+1]!=c&&k<l)
{//printf("k=%d",k);system("pause");
Procurar_Pivos(l,c,M,P);
if(l==c)
{
detd=detd*(P[k]);
if(detd<1)
{
detd=detd*-1;
detn=detn*-1;
}
}
soma_linhas(l,c,M,P,k);
k=1;//printf("K=%d\n",k);
}
else
{
k=k+1;//printf("K=%d\n",k);
}
for(i=1;i<=l;i++)
{
MDC(c,M,i,mdc);
}
Imprimir_matrix(l,c,M);
for(i=1;i<=l;i++)
{//printf("erro");
for(j=1;j<=c;j++)
{ //printf("MDC=%d",mdc);system("pause");
if(mdc!=0)
{
M[j]=M[j]/mdc;//printf("erro%d\n",mdc);printf("M[%d][%d]/%d",i,j,M[j],mdc);
}
}
if(mdc!=0&&l==c)
{
detn=detn*mdc;
//detn=det/mdc[i+1];printf("determinante=%d",det);system("pause");
}
}
printf("\n");
Imprimir_matrix(l,c,M);
printf("\n");
//system("pause");
}
e=Ler_Matrix_Escalonada(l,c,M,e);
if(l==c&&e==1)
{
detn=detn*determinante(l,c,M,detn);
//tirar mdc de detn e detd;
aux=MDC2(detn,detd);
detn=detn/aux;
detd=detd/aux;
if(detd==1)
{
printf("Determinante=%f ",detn);
}
else
{
printf("Determinante=(%f/%f) ",detn,detd);
}
Re=detn/detd;
printf("Determinante%f",Re);
}
printf("0-SAIR");
scanf("%d",&senha);
}
printf("Fim Algoritmo");
return 0;
}
.espero ter ajudado.