Created
February 7, 2016 03:53
-
-
Save RamonLopezEscudero/1dd6972f62cd78c88a13 to your computer and use it in GitHub Desktop.
Cálculo de la determinante por reducción Gaussiana
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdlib.h> | |
int main() | |
{ | |
/* ---------------------------------- */ | |
int i, j, k; | |
int n_colrow; | |
/* ---------------------------------- */ | |
printf("Programa para calcular la determinante de una matriz por reduccion de Gauss \n \n"); | |
printf("Ingrese el orden de la matriz: "); | |
scanf("%i", &n_colrow); | |
/* ---------------------------------- */ | |
int counter; | |
float escalar_determ, matriz[n_colrow][n_colrow], matriz_apoyo[n_colrow][2]; | |
/* ---------------------------------- */ | |
for (i = 0; i < n_colrow; i++) | |
{ | |
printf("\nIngrese los valores del renglon %i\n", i + 1); | |
for (j = 0; j < n_colrow; j++) | |
{ | |
printf("Ingrese el elemento %i: ", j + 1); | |
scanf("%f", &matriz[i][j]); | |
} | |
} | |
counter = -1; | |
escalar_determ = 1.0; | |
/* Iteracion por renglon para verificar que en la diagonal principal no haya ceros */ | |
for (i = 0; i < n_colrow; i++) | |
{ | |
counter += 1; | |
if (matriz[i][counter] == 0) | |
{ | |
for (j = counter + 1; j < n_colrow; j++) | |
{ | |
if (matriz[i][j] != 0) | |
{ | |
escalar_determ = escalar_determ * -1; | |
for (k = 0; k < n_colrow; k++) | |
{ | |
matriz_apoyo[k][0] = matriz[k][counter]; | |
matriz_apoyo[k][1] = matriz[k][j]; | |
} | |
for (k = 0; k < n_colrow; k++) | |
{ | |
matriz[k][counter] = matriz_apoyo[k][1]; | |
matriz[k][j] = matriz_apoyo[k][0]; | |
} | |
break; | |
} | |
else | |
{ | |
printf("\nEl valor de la determinante es: 0.000\n"); | |
system("pause"); | |
exit(0); | |
} | |
} | |
} | |
} | |
/* ---------------------------------- */ | |
float var_apoyo; | |
/* ---------------------------------- */ | |
counter = -1; | |
for (i = 0; i < n_colrow; i++) | |
{ | |
counter += 1; | |
var_apoyo = 1 / matriz[i][i]; | |
escalar_determ = escalar_determ * (1 / var_apoyo); | |
for (j = 0; j < n_colrow; j++) | |
{ | |
matriz[i][j] = matriz[i][j] * var_apoyo; | |
} | |
for (j = counter + 1; j < n_colrow; j++) | |
{ | |
var_apoyo = matriz[j][i]; | |
for (k = 0; k < n_colrow; k++) | |
{ | |
matriz[j][k] = matriz[j][k] - (var_apoyo * matriz[i][k]); | |
} | |
} | |
} | |
/* Impresion de los resultados */ | |
printf("\nEl valor de la determinante es: %0.3f", escalar_determ); | |
printf("\n"); | |
system("pause"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment