#include <iostream.h> //BIBLIOTECAS
#include <time.h>
#include <conio.h>
#include <dos.h>
#define maxi 20
float matriz[maxi][maxi],b[maxi][maxi],inter; //VARIABLES GLOBALES
time_t t; //variable que contiene la hora de la pila del sistema
//FUNCIONES
void impr_matriz(float x, float y,int l); //funcion para la impresion de la matriz
void titulo(); //funcion para la impresion del titulo
void salida(); //funcion para salir de programa
void solucion(int a,int l); //funcion que presenta la solucion al sistema
void cond(float a);
//FUNCION PRINCIPAL
void main ()
{ //inicio main
int n,i,j,a,lon,in,z,c,fin,decear,elige; //variables locales
char modi,inicio,compr,otro;
inicio:
clrscr();
titulo();
cout<<"\nCuantas soluciones tendra el sistema [ ]";
gotoxy(39,6);
cin>>n;
cond(n);
if (n<=0)
{ //inicio if n<=0
goto inicio;
} //fin if n<=0;
else
{ //inicio else n<=0
for (i=1;i<=n;i++)
{ //inicio for i
for (j=1;j<=n+1;j++)
{ //inicio for j
cout<<"introduce el valor ["<<i<<","<<j<<"]: ";
cin>>matriz[i][j];
} //fin for j
} //fin for i
clrscr();
titulo();
cout<<"\nLa matriz es:\n";
impr_matriz(i,j,n);
//PROCESO PARA METODO
z=n+1;
do
{ //inicio do
if (matriz[1][1]==0)
{ //inicio if matriz
c=z-1;
for (i=2;i<=c;i++)
{ //inicio for i=2
if (matriz[i][1]!=0)
{ //inicio if matriz
for (j=1;j<=z;j++)
{ //inicio for j=1
inter=matriz[i][j];
//cout<<"inter vale: "<<matriz[i][j]<<"\t";; getch();
matriz[i][j]=matriz[1][j]; ///INTERCAMBIAR RENGLONES
//cout<<"matriz[i][j] vale: "<<matriz[1][j]<<"\t"; getch();
matriz[1][j]=inter;
//cout<<"matriz[1][j] vale: "<<inter<<"\n"; getch();
} //fin for j=1
} //fin if matriz
} //fin for=2
cout<<"\nPresiona una tecla para hacer intercambio de renglones..."; getch();
if (matriz[1][1]==0)
{ //inicio for matriz
elige:
cout<<"\n\n\n\tEste sistema de ecuaciones no puede resolverse";
cout<<"\n\n\tDeceas:\n\t1. INGRESAR NUEVOS DATOS\n\t2. SALIR DEL PROGRAMA\n\tElige: ";
cin>>decear;
if(decear==1)
{ //inicio if decear=1
goto inicio;
} //fin ir decear=1
else
{ //inicio else decear=1
if (decear==2)
{ //inicio if decear=2
goto fin;
} //fin if decear=2
else
{ //inicio else decear=2
if (decear!=1 && decear!=2)
{ //inicio if decear!=1 && decear!=2
clrscr();
titulo();
goto elige;
} //fin if decear!=1 && decear!=2
} //fin else decear=2
} //fin else decear=1
} //fin if decear=1
cout<<"\n\nLa nueva matriz a quedado:\n";
impr_matriz(i,j,n);
} //fin if matriz
else
{ //inicio else matriz
for (j=2;j<=z;j++)
{ //inicio for j=2
for (i=2;i<=n;i++)
{ //inicio for i=2
b[i-1][j-1]=matriz[i][j]-matriz[1][j]*matriz[i][1]/matriz[1][1];
// cout<<"b["<<i-1<<"]["<<j-1<<"]= "<<b[i-1][j-1]<<"\t"; getch();
} //fin for i=2
} //fin for j=2
for (j=2;j<=z;j++)
{ //inicio for j=2
b[n][j-1]=matriz[1][j]/matriz[1][1];
} //fin for j=2
z-=1;
for (j=1;j<=z;j++)
{ //inicio for j=1
for (i=1;i<=n;i++)
{ //inicio for i=1
matriz[i][j]=b[i][j];
} //fin for i=1
} //fin for j=1
} //fin else matriz
} //fin do
while (z>1);
cout<<"Presiona una tecla para mostrar la solucion al sistema....";
getch();
cout<<"\n\t\t\tLa solucion es:\n ";
solucion(i,n);
cout<<"\n\n\nDeseas calcular otro sistema de ecuaciones (S/N): ";
cin>>otro;
if (otro=='s'||otro=='S')
{ //inicio if otro
goto inicio;
} //fin if otro
else
{ //inicio else otro
salida();
} //fin else otro
} //fin else n<=0
getch();
fin:
clrscr();
salida();
getch();
} //fin funcion principal
//FUNCIONES SECUNDARIAS
void impr_matriz(float x, float y,int l)//funcion para la impresion de la matriz
{ //inicio funcion impr_matriz
for (x=1;x<=l;x++)
{ //inicio for x
for (y=1;y<=l+1;y++)
{ //inicio for y
cout<<"\t"<<matriz[x][y];
} //fin for y
cout<<"\n";
} //fin for x
} //fin funcion impr_matriz ?
void titulo() //funcion para la impresion del titulo
{ //inicio funcion titulo
cout<<" ALGEBRA LINEAL\n";
cout<<" Metodo de Gauss-Jordan\n\n";
cout<<"HOY ES:";
time (&t); //da hora almacenada en &t
gotoxy (10,4);
cout<<ctime(&t); //impresion de hora
}
void salida() //funcion para salir de programa
{ //inicio de funcion salida
clrscr();
cout<<" PUEDES PONER LO QUE QUIERAS AQUI\n";
cout<<"\n\n\n\nPresiona cualquier tecla para salir...";
} //fin funcion salida
void solucion(int a,int l) //presenta solucion al sistema
{
for (a=1;a<=l;a++)
cout<<"\n\t\t\tX"<<a<<" = "<<matriz[a][1];
}
void cond(float a)
{
char b=65;
for (int i=65;i<90;i++)
{
if (a==b)
{
cout<<"nel";
}
}
}
NOTA:Talvez tengas que hacer algunos ajustes cuando lo copies, es codigo fuente de c++ para algebra lineal aunque otros lo llaman metodos numericos
mas claro mi hermano creas mas librerías ? mas explicadito c x favor
ResponderEliminar