Aloritmo para obtener determinante

Solo disponible en BuenasTareas
  • Páginas : 2 (291 palabras )
  • Descarga(s) : 0
  • Publicado : 10 de septiembre de 2012
Leer documento completo
Vista previa del texto
Hernandez Gutierrez Marco Antonio
1CV1
#include <iostream>
#include <conio.h>
#include <malloc.h>
#include <math.h>
#include <stdio.h>
int det(int **m, int b){
int determinante=0, aux=0;
int c;
if(b==2)
return m[0][0]*m[1][1] - m[1][0]*m[0][1];
else
{
for(int j=0; j<b; j++)
{
int **menor = (int**)malloc(sizeof(int)*(b-1));
for(int h=0; h<(b-1); h++)
menor[h] = (int *)malloc(sizeof(int)*(b-1));
for(int k=1; k<b; k++)
{
c= 0;
for(int l=0; l<b; l++)
{
if(l!=j)
{
menor[k-1][c] =m[k][l];
c++;
}
}
}
aux = pow(-1, 2+j)* m[0][j] * det(menor, b-1);determinante += aux;
for(int q = 0; q<(b-1); q++)
free(menor[q]);
free(menor);
}
return determinante;
}
}

intmain()
{
fflush(stdin);
int n; // n = numero de renglones = numero de columnas
int **m=NULL;
printf("Elija el numero de renglones o columnas que tiene su matriz: ");
scanf("%d",&n);
//Se crea la matriz de forma dinamica
m = (int **)malloc(sizeof(int)*n);
for(int i=0; i<n; i++)
m[i]=(int *)malloc(sizeof(int)*n);
// Pide el valor de cada elemento de la matriz
for(intx=0; x<n; x++)
for(int y=0; y<n; y++)
{
printf("\nIntroduzca el valor de matriz %d , %d: ",x,y);
scanf("%d",&m[x][y]);
}
// Despliego elresultado de la funcion det
printf("\nDeterminante: %d\n",det(m, n));
// Libero la memoria utilizada por la matriz
for(int r=0; r<n; r++)
free(m[r]);
free(m);
system("pause");
return 0;
}
tracking img