ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Programa Matriz


Enviado por   •  3 de Noviembre de 2014  •  262 Palabras (2 Páginas)  •  176 Visitas

Página 1 de 2

#include <stdio.h>

#include <conio.h>

#include <math.h>

/*********** VARIABLES GLOBALES **********************/

double matriz[50][50];

double identidad[50][50];

int N; //N contiene el tama¤o de la matriz cuadrada

/*********** PROTOTIPOS DE FUNCIONES *****************/

void hallar_inversa(void);

void escalonar_matriz(void);

void permutar_filas(int fila1, int fila2);

void multip_fila(int fila,double factor);

void sumar_fila_multip(int fila1,int fila2, double factor);

void ceros_abajo(int fila_pivote, int columna_pivote);

void ceros_arriba(int fila_pivote, int columna_pivote);

void generar_matriz_identidad(void);

/*****************************************************/

int main()

{

int fi, co;

clrscr();

do{

printf("Ingrese el tama¤o de la matriz cuadrada: ");

scanf("%i",&N);

if(N>50 || N<2) {clrscr(); printf("El numero debe estar entre 2 y 50n");}

}while(N>50 || N<2);

for(fi=0;fi<N;fi++)

{

for(co=0;co<N;co++)

{

printf("Ingrese el valor de matriz[%i][%i]",fi+1,co+1);

scanf("%lf",&matriz[fi][co]);

}

}

hallar_inversa();

return 0;

}

/*-------------------------------------------------------------------------*/

void hallar_inversa(void)

{

int cont,cont2, flag=0;

escalonar_matriz();

generar_matriz_identidad(); //rellena la matriz identidad

for(cont=0;cont<N;cont++) //recorre filas

{

for(cont2=0;cont2<N;cont2++) //recorre columnas

{

if(matriz[cont][cont2]!=0) //busca pivote (elemento ditinto de 0)

{

if(matriz[cont][cont2]!=1) //si pivote no es 1, se lo multiplica

{

multip_fila(cont,pow(matriz[cont][cont2],-1));

}

ceros_arriba(cont,cont2); // se hacen 0's por arriba

ceros_abajo(cont,cont2); // y por debajo del pivote

break;

}

}

}

/*--------------------------------------------------------------*/

/* Una vez terminada esta operacion, la matriz identidad estara */

/* transformada en la inversa */

/* */

/* Ahora se comprueba que la matriz original este transformada */

/* en la matriz identidad, de no ser asi la inversa obtenida */

/* no es valida y la matriz no tiena inversa */

/*--------------------------------------------------------------*/

for(cont=0;cont<N;cont++)

{

for(cont2=0;cont2<N;cont2++)

{

if(cont==cont2)

{

if(matriz[cont][cont2]!=1) flag=1;

}

else

{

if(matriz[cont][cont2]!=0) flag=1;

}

}

}

if(flag==1)

{

printf("nnLa matriz no tiene inversann");

}

else

{

printf("nnLa Matriz Inversa es :nn");

for(cont=0;cont<N;cont++)

{

for(cont2=0;cont2<N;cont2++)

{

printf("%+#0.3f ",identidad[cont][cont2]);

}

printf("n");

}

}

printf("nPresione una tecla para continuar...");

getch();

}

/*-----------------------------------------------------------------------*/

/* */

/*

...

Descargar como (para miembros actualizados)  txt (5.4 Kb)  
Leer 1 página más »
Disponible sólo en Clubensayos.com