AYUDA URGENTE CON MATRICES EN C++

nebcan
21 de Abril del 2005
Necesito ayuda super urgente en la creación de un programa de Cálculo de Matriz Inversa, es para mañana!!!! Agradeceré mucho la ayuda brindada

manuel rolog
21 de Abril del 2005
#include<iostream.h>
#include<iomanip.h>
float M[11][11],ID[11][11],aux[11];
int n;
void leer_m(void);
void escribe(float x[11][11]);
void reinvierte(void);
void invierte(void);
void main(){
cout<<"Digite dimension de la matrizn";
cin>>n;
cout<<"Digite los elementos de la matrizn";
leer_m();
cout<<"La matriz es:n";
escribe(M);
invierte();
}

void leer_m(void){
int i,j;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
cout<<"M["<<i<<"]["<<j<<"]= ";
cin>>M[i][j];
if(i==j)
ID[i][j]=1;
else
ID[i][j]=0;
}
}
}

void escribe(float x[11][11]){
int i,j;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
cout<<setw(10)<<setiosflags(ios::fixed)<<setprecision(2)<<x[i][j];
}
cout<<"n";
}
}

void reinvierte(void){
int i,j,h;
float c;
for(i=n;i>=2;i--){
for(j=i-1;j>=1;j--){
if(M[j][i]!=0){
c=M[j][i];
for(h=n;h>=1;h--){
M[j][h]=M[j][h]-(c/M[i][i])*M[i][h];
ID[j][h]=ID[j][h]-(c/M[i][i])*ID[i][h];
}
}
}
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
ID[i][j]=ID[i][j]/M[i][i];
cout<<"La matriz inversa es:n";
escribe(ID);
}//reinvertir

void invierte(void){
int t,i,j,h;
float f,c;
f=1;
for(i=1;i<=n-1;i++){
t=1;
if(f!=0){
if(M[i][i]==0)
do{
f=f*(-1);
for(j=1;j<=n;j++){
aux[j]=M[i][j];
M[i][j]=M[i+t][j];
M[i+t][j]=aux[j];
aux[j]=ID[i][j];
ID[i][j]=ID[i+t][j];
ID[i+t][j]=aux[j];
}//for
t++;
}//do
while(!((M[i][i]!=0)||(t==n-i+1)));
if(M[i][i]==0)
f=0;
else{
for(j=i+1;j<=n;j++)
if(M[j][i]!=0){
c=M[j][i];
for(h=1;h<=n;h++){
M[j][h]=M[j][h]-(c/M[i][i])*M[i][h];
ID[j][h]=ID[j][h]-(c/M[i][i])*ID[i][h];
}//for
}//if
}//else
}//if
}//for
for(h=1;h<=n;h++) //f es el determinante de la matriz
f=f*M[h][h];
if(f==0)
cout<<"Matriz no invertiblen";
else
reinvierte();
}//invierte