AYUDA URGENTE CON MATRICES EN C++
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
#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
#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
