Вы находитесь на странице: 1из 26

/*ESCUELA POLITCNICA DEL EJRCITO

Nombres: Daniela Espinosa M., David Snchez S


Carrera: Ingeniera Mecnica
Proyecto: Resolucin de Sistemas de Ecuaciones
Fecha de Entrega: 16 de julio, 2013*/
#include
#include
#include
#include
#include
#include
#include
#include

<stdio.h>
"conio.h"
"windows.h"
"iostream"
"cstdlib"
"stdlib.h"
"ctype.h"
"ctime"

#define MAX 50
using namespace std;
void gotoxy(int x, int y);
void encerar(int matriz[MAX][MAX]);
void ingreso(double matriz[MAX][MAX], int n);
void menu();
void matrizinversa(double matriz[MAX][MAX], int n);
void determinante(int matriz[MAX][MAX]);
void imprimir(int matriz[MAX][MAX], int d);
void submenudet();
void submenugauss();
void submenuinv();
void metodinversa();
void metodogaussjordan(double a[MAX][MAX], int n);
int cadena(char *op);
int csymletras(char *op);
int letras(char *op);
int sletras(char *op);
int punto(char *op);
int guion(char *op);
int mcvalidacion(char *op);
int validacion(char *op);
void captura(double a[MAX][MAX],int n);
double copiar(double a[MAX][MAX],int n,double b[MAX][MAX]);
char inicia (char *op);
void gauss();
void metodo2(double[MAX][MAX], int n);
void metodo3(double[MAX][MAX], int n);
void metdet();
void color(int X){
SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE),X);
}
void TextColor(int C_Gcolor){
HANDLE C_Ghandle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(C_Ghandle, C_Gcolor);
}
void gotoxy(int x, int y){
HANDLE hConsoleOutput;
COORD dwCursorPosition;
cout.flush();

dwCursorPosition.X = x;
dwCursorPosition.Y = y;
hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hConsoleOutput,dwCursorPosition);
}
void main(){
int d, sistema[MAX][MAX];
gotoxy(24,1);
TextColor(2);
cprintf("ESCUELA POLITECNICA DEL EJERCITO");
gotoxy(22,3);
printf("Resolucion de Sistemas de Ecuaciones");
gotoxy(1,24);
TextColor(0);
system("pause");
system("CLS");
menu();
gotoxy(1,24);
TextColor(0);
system("pause");
}
void menu(){
int tecla, op=1,i;
system("CLS");
gotoxy(38,1);
TextColor(12);
printf("MENU");
gotoxy(1,4);
printf("Seleccione el metodo para resolver el sistema de ecuaciones");
do{
for(i=6;i<=9;i++){
gotoxy(29,i);printf("");
gotoxy(39,i);printf("");
}
do{
system ("color 07");
gotoxy(1,6);
printf("1.
Metodo de Determinantes");
gotoxy(1,7);
printf("2.
Metodo de Gauss-Jordan");
gotoxy(1,8);
printf("3.
Metodo Matriz Inversa");
gotoxy(1,9);
printf("4.
Salir");
switch(op){
case 1:
gotoxy(1,6);
TextColor(3);
cprintf("1.
METODO DE DETERMINANTES");
break;
case 2:
gotoxy(1,7);
TextColor(3);
cprintf("2.
METODO DE GAUSS-JORDAN");
break;
case 3:
gotoxy(1,8);
TextColor(3);

break;
case 4:

}
do{

cprintf("3.
gotoxy(1,9);
TextColor(3);
cprintf("4.
break;

METODO MATRIZ INVERSA");

SALIR");

tecla=getch();
}while(tecla!=72 && tecla!=80 && tecla!=13);
if(tecla==72){
if(op>1){
op--;
}
}
if(tecla==80){
if(op<4){
op++;
}
}
}while(tecla!=13);
system("CLS");
switch(op){
case 1:
submenudet();
break;
case 2:
submenugauss();
break;
case 3:
submenuinv();
break;
case 4:
TextColor(5);
gotoxy(37,12);
cprintf("GRACIAS");
gotoxy(1,24);
TextColor(0);
system("PAUSE");
exit(0);
break;
}
system("CLS");
}while(op!=4);
system("pause");
}
void submenudet(){
int tecla, op=1,i, d;
int matriz[MAX][MAX];
system("CLS");
do{
for(i=6;i<=9;i++){
gotoxy(29,i);printf("");
gotoxy(39,i);printf("");
}
do{
gotoxy(25,1);

TextColor(12);
cprintf("SUBMENU METODO DE DETERMINANTES");
TextColor(7);
gotoxy(1,6);
cprintf("1.
Definicion");
gotoxy(1,7);
TextColor(7);
cprintf("2.
Resolucion del sistema");
gotoxy(1,8);
TextColor(7);
cprintf("3.\tSalir");
switch(op){
case 1:
gotoxy(1,6);
TextColor(3);
cprintf("1.
DEFINICION");
break;
case 2:
gotoxy(1,7);
TextColor(3);
cprintf("2.
RESOLUCION DEL SISTEMA");
break;
case 3:
gotoxy(1,8);
TextColor(3);
cprintf("3.
SALIR");
break;
}
do{
tecla=getch();
}while(tecla!=72 && tecla!=80 && tecla!=13);
if(tecla==72){
if(op>1){
op--;
}
}
if(tecla==80){
if(op<4){
op++;
}
}
}while(tecla!=13);
system("CLS");
switch(op){
case 1:
TextColor(4);
gotoxy(27,1);
cprintf("DEFINICION DE DETERMINANTE");
TextColor(7);
gotoxy(0,3);
cprintf("Un determinante es un objeto matemtico asociado a una
matriz cuadrada.");
TextColor(7);
cprintf("\nEs un nmero que se calcula a partir de los nmeros que
forman la matriz.");
getch();
break;
case 2:

encerar(matriz);
metdet();
break;
case 3:
break;

menu();

system("CLS");
}while(op!=3);
system("pause");
}
void submenugauss(){
int tecla, op=1,i, d;
int matriz[MAX][MAX];
system("CLS");
do{
for(i=6;i<=9;i++){
gotoxy(29,i);printf("");
gotoxy(39,i);printf("");
}
do{

gotoxy(30,1);
TextColor(12);
cprintf("SUBMENU GAUSS-JORDAN");
TextColor(7);
gotoxy(1,6);
cprintf("1.
Definicion");
gotoxy(1,7);
TextColor(7);
cprintf("2.
Resolucion del sistema");
gotoxy(1,8);
TextColor(7);
cprintf("3.\tSalir");
switch(op){
case 1:
gotoxy(1,6);
TextColor(3);
cprintf("1.
DEFINICION");
break;
case 2:
gotoxy(1,7);
TextColor(3);
cprintf("2.
RESOLUCION DEL SISTEMA");
break;
case 3:
gotoxy(1,8);
TextColor(3);
cprintf("3.
SALIR");
break;
}
do{
tecla=getch();
}while(tecla!=72 && tecla!=80 && tecla!=13);
if(tecla==72){
if(op>1){
op--;

}
}
if(tecla==80){
if(op<4){
op++;
}
}
}while(tecla!=13);
system("CLS");
switch(op){
case 1:
TextColor(4);
gotoxy(22,1);
cprintf("DEFINICION DEL METODO DE GAUSS-JORDAN");
TextColor(7);
gotoxy(0,3);
cprintf("El metodo de Gauss para resolver sistemas de ecuaciones
es una generalizacion");
TextColor(7);
cprintf("\ndel metodo de reduccion y consiste en transformar el
sistema dado");
TextColor(7);
cprintf("\nen otro equivalente.");
getch();
break;
case 2:
encerar(matriz);
gauss();
break;
case 3:
menu();
break;
}
system("CLS");
}while(op!=3);
system("pause");
}
void submenuinv(){
int tecla, op=1,i, d;
int matriz[MAX][MAX];
system("CLS");
do{
for(i=6;i<=9;i++){
gotoxy(29,i);printf("");
gotoxy(39,i);printf("");
}
do{
gotoxy(26,1);
TextColor(12);
printf("SUBMENU METODO MATRIZ INVERSA");
TextColor(7);
gotoxy(1,6);
cprintf("1.
Definicion");
gotoxy(1,7);
TextColor(7);
cprintf("2.\tResolucion del sistema");
gotoxy(1,8);

TextColor(7);
cprintf("3.\tSalir");
switch(op){
case 1:
gotoxy(1,6);
TextColor(3);
cprintf("1.
DEFINICION");
break;
case 2:
gotoxy(1,7);
TextColor(3);
cprintf("2.
RESOLUCION DEL SISTEMA");
break;
case 3:
gotoxy(1,8);
TextColor(3);
cprintf("3.
SALIR");
break;
}
do{
tecla=getch();
}while(tecla!=72 && tecla!=80 && tecla!=13);
if(tecla==72){
if(op>1){
op--;
}
}
if(tecla==80){
if(op<4){
op++;
}
}
}while(tecla!=13);
system("CLS");
switch(op){
case 1:
TextColor(4);
gotoxy(26,1);
cprintf("DEFINICION DE MATRIZ INVERSA");
TextColor(7);
gotoxy(0,3);
cprintf("Es aquella matriz que al ser multiplicada por la matriz
original");

TextColor(7);
cprintf("\nda como resultado la identidad.");
gotoxy(1,24);
TextColor(0);
system("pause");
break;
case 2:
encerar(matriz);
metodinversa();
break;
case 3:
break;
}

menu();

system("CLS");

}while(op!=3);
system("PAUSE");
}
void encerar(int matriz[MAX][MAX]){
for(int i=0; i<MAX; i++){
for(int j=0; j<=MAX; j++)
matriz[i][j]=0;
}
}
void ingreso(double mat[MAX][MAX], int n){
int i,j,m;
TextColor(7);
mat[n][n];
for(i=0;i<n;i++){
printf("Ecuacion% d\n",i+1);
for(j=0;j<n;j++){
printf(" %c: ",(j+97));
scanf("%d",&mat[i][j]);
}
printf("Constante: ");
scanf("%d",&mat[i][j]);
}
printf("\n");
system("cls");
TextColor(5);
for(i=0;i<n;i++){
for(j=0;j<=n;j++){
cprintf("%5.1f",mat[i][j]);
}
cprintf("\n");
}
printf("\n");
for(i=0;i<n;i++){
for(j=0;(j+97)<(n+96);j++){
TextColor(7);
cprintf("%.1f",mat[i][j]);
cprintf("%c+",j+97);
}
cprintf("%.1f",mat[i][j]);
cprintf("%c",j+97);
cprintf("=%.1f",mat[i][j+1]);
printf("\n");
}
gotoxy(1,24);
TextColor(0);
system("PAUSE");

}
int cadena(char *op)
{
int c;
c=0;

if(op[15] != ' ')


{
cout<<"\n Valor demasiado grande, intentelo nuevamente con un NUMERO que tenga como
maximo 14 caracteres ";

c=0;
cin.get();
}
else
{
c=1;
}
cin.get();
return c;
}
int csymletras(char *op)
{
int o,c,r;
o=0;
for(c=0; c<10; c++)
{
if(op[c] != '1' && op[c] != '2' && op[c] != '3' && op[c] != '4' && op[c] != '5' && op[c] !=
'6' && op[c]!='7' && op[c] != '8' && op[c]!='9' && op[c]!='0' && op[c]!= ' ')
{
r=1 ;
}
else
{
r=0;
}
o=o+r;
}
return o;
}
int letras(char *op)
{
int o,c,r;
o=0;
for(c=0; c<10; c++)
{
if(op[c] != '-' && op[c] != '.' && op[c] != '1' && op[c] != '2' && op[c] != '3' && op[c] != '4'
&& op[c] != '5' && op[c] != '6' && op[c]!='7' && op[c] != '8' && op[c]!='9' && op[c]!='0' &&
op[c]!= ' ')
{
r=1 ;
}
else
{
r=0;
}
o=o+r;
}
if(o>1)
{
cout<<"\n No es un numero , x favor de teclear un numero ";
cin.get();
}
return o;
}
int sletras(char *op)
{
int o,c,r;

o=0;
for(c=0; c<10; c++)
{
if(op[c] != '1' && op[c] != '2' && op[c] != '3' && op[c] != '4' && op[c] != '5' && op[c] !=
'6' && op[c]!='7' && op[c] != '8' && op[c]!='9' && op[c]!='0' && op[c]!= ' ')
{
r=1 ;
}
else
{
r=0;
}
o=o+r;
}
if(o>1)
{
cout<<"\n No es un numero entero , x favor de teclear un numero entero";
cin.get();
}
return o;
}
int punto(char *op)
{
int a,b,c;
c=0;
for (a=0 ; a<10 ; a++)
{
if (op[a]=='.' )
{
b=1;
}
else
{
b=0;
}
c=c+b;
}
return c;
}
int guion(char *op)
{
int a,b,c;
c=0;
for (a=0 ; a<10 ; a++)
{
if (op[a]=='-' )
{
b=a+1;
}
else
{
b=0;
}
c=c+b;
}
return c;
}

int mcvalidacion(char *op)


{
int a,b,v;
char *o;
o=op;
a=cadena(o);
b=sletras(o);
if(a<1 ||b>1)
{
v=0;
}
else
{
v=1;
}
return v;
}
int validacion(char *op)
{
int a,b,c,d,v;
char *o;
o=op;
a=cadena(o);
b=letras(o);
c=guion(o);
d=punto(o);
if(a<1 || b>1 || c>1 || d>1)
{
v=0;
}
else
{
v=1;
}
return v;
}
void captura(double a[MAX][MAX],int n)
{
int c,f,v;
char A[5000];
for(c=0;c<n;c++)
{
for(f=0;f<n+1;f++)
{
if(f<n)
{
do{system("cls");
inicia(A);
cout<<"\n\n\n\n Captura de la matriz :";
cout<<"\n\n X"<<c+1<<","<<f+1<<" : ";
cin>>A;
v=validacion(A);
}while (v<1);
a[c][f]=atof(A);
}
else
{
system("cls");

cout<<"\n\n\n\n Captura de la matriz :";


cout<<"\n\n Constante = ";
cin>>a[c][f];
}
}
}
}
void imprimir (double a[MAX][MAX],int n)
{
int c,f,r,m;
r=0;
double e,d;
e = a[0][0];
m=n*n;
for(c=0;c<n;c++)
{
for(f=0;f<n;f++)
{
d =a[c][f];
if ( d != e)
{
r=r+0;
}
else
{
r=r+1;
}
}
}
}
void matrizinversa(double a[MAX][MAX],int n)
{
int c,f,i;
double b[50][50];
for(c=0;c<n;c++)
{
for(f=0;f<n*2;n++)
{
b[c][f]=0;
}
}
for(c=n;c<n*2;c++)
{
for(f=0;f<n;f++)
{
b[c][f]=1;
}
}
n=n*2;

imprimir(b,n);
}
void metodogaussjordan(double a[MAX][MAX], int n)
{
int e,ee,c,f,cc,ff,h,i;
double r[50][50],d,g,b,j[50][50],t[50];
e = 0;
for(c=0;c<n;c++)
{
t[c]=a[c][n];
}
for(c=0;c<n;c++)
{
for(f=0;f<n*2 ;f++)
{
j[c][f]=0;
}
}
i=n;
for(c=0;c<n;c++)
{
j[c][i+c]= 1;
}
for(c=0;c<n;c++)
{
for(f=0;f<n;f++)
{
j[c][f]=a[c][f];
}
}
for(c=0;c<n;c++)
{
for(f=0;f<n*2 ;f++)
{
a[c][f]=j[c][f];
}
}
for(c=0;c<n;c++)
{
b=a[c][c];
if(b != 0 )
{
for(f=0;f<n*2;f++)
{

a[c][f]=(a[c][f])/b;
r[c][f]=a[c][f];

for(cc=e;cc<n;cc++)
{
d=a[cc+1][c];
for(ff=0;ff<n*2;ff++)
{
r[cc+1][ff]=((-1*d)*(a[c][ff]))+(a[cc+1][ff]);
a[cc][ff]=r[cc][ff];
}
}

e=e+1;
if(c>0 )
{
for(cc=0;cc<c;cc++)
{
g=r[cc][c];
for(ff=0;ff<n*2;ff++)
{
r[cc][ff]=((-1*g)*(a[c][ff]))+(a[cc][ff]);
a[cc][ff]=r[cc][ff];
}
}
}
}
else
{
for(cc=c;cc<n;cc++)
{
h=a[cc][c];
if(h != 0)
{
h=cc;
}
}

for(f=c;f<n*2;f++)
{
a[c][f]=a[c][f]+a[h][f];
}
imprimir(a,n);
b=a[c][c];
for(f=0;f<n*2;f++)
{
a[c][f]=(a[c][f])/b;
r[c][f]=a[c][f];
}
for(cc=e;cc<n;cc++)
{
d=a[cc+1][c];
for(ff=0;ff<n*2;ff++)
{
r[cc+1][ff]=((-1*d)*(a[c][ff]))+(a[cc+1][ff]);

}
e=e+1;

a[cc][ff]=r[cc][ff];
}

if(c>0 )
{
for(cc=0;cc<c;cc++)
{

g=r[cc][c];
for(ff=0;ff<n*2;ff++)
{
r[cc][ff]=((-1*g)*(a[c][ff]))+(a[cc][ff]);
a[cc][ff]=r[cc][ff];
}
}
}
}
}
for(c=0;c<n;c++)
{
for(f=0;f<n;f++)
{
a[c][f]=r[c][i+f];
}
}
printf("Matriz Inversa");
for(c=0;c<n;c++)
{
for(f=0;f<n;f++)
{
cout<<" "<<a[c][f];
}
cout<<"\n";
}
for(c=0;c<n;c++)
{
r[c][n]=0;
}
for(c=0;c<n;c++)
{
for(f=0;f<n;f++)
{
r[c][n]=r[c][n]+(a[c][f])*(t[f]);
}
}
cout<<"\n";
cout.precision(2);
for(c=0;c<n; c++)
{
cout<<"\n\n X"<<c+1<<" = "<<r[c][n];
}
getch();
}
void metodo2(double a[MAX][MAX],int n){
int e,ee,c,f,cc,ff,h,i;
double r[50][50],d,g,b,j[50][50],t[50];
e = 0;
for(c=0;c<n;c++)
{
t[c]=a[c][n];
}

for(c=0;c<n;c++)
{
for(f=0;f<n*2 ;f++)
{
j[c][f]=0;
}
}
i=n;
for(c=0;c<n;c++)
{
j[c][i+c]= 1;
}
for(c=0;c<n;c++)
{
for(f=0;f<n;f++)
{
j[c][f]=a[c][f];
}
}
for(c=0;c<n;c++)
{
for(f=0;f<n*2 ;f++)
{
a[c][f]=j[c][f];
}
}
for(c=0;c<n;c++)
{
b=a[c][c];
if(b != 0 )
{
for(f=0;f<n*2;f++)
{
a[c][f]=(a[c][f])/b;
r[c][f]=a[c][f];
}
for(cc=e;cc<n;cc++)
{
d=a[cc+1][c];
for(ff=0;ff<n*2;ff++)
{
r[cc+1][ff]=((-1*d)*(a[c][ff]))+(a[cc+1][ff]);
a[cc][ff]=r[cc][ff];
}
}
e=e+1;
if(c>0 )
{
for(cc=0;cc<c;cc++)
{
g=r[cc][c];
for(ff=0;ff<n*2;ff++)
{
r[cc][ff]=((-1*g)*(a[c][ff]))+(a[cc][ff]);
a[cc][ff]=r[cc][ff];

}
}
}
}
else
{

for(cc=c;cc<n;cc++)
{
h=a[cc][c];
if(h != 0)
{
h=cc;
}
}

for(f=c;f<n*2;f++)
{
a[c][f]=a[c][f]+a[h][f];
}
imprimir(a,n);
b=a[c][c];
for(f=0;f<n*2;f++)
{

a[c][f]=(a[c][f])/b;
r[c][f]=a[c][f];

for(cc=e;cc<n;cc++)
{
d=a[cc+1][c];
for(ff=0;ff<n*2;ff++)
{
r[cc+1][ff]=((-1*d)*(a[c][ff]))+(a[cc+1][ff]);

a[cc][ff]=r[cc][ff];
}
}
e=e+1;
if(c>0 )
{
for(cc=0;cc<c;cc++)
{
g=r[cc][c];
for(ff=0;ff<n*2;ff++)
{
r[cc][ff]=((-1*g)*(a[c][ff]))+(a[cc][ff]);
a[cc][ff]=r[cc][ff];
}
}
}
}

for(c=0;c<n;c++)
{
for(f=0;f<n;f++)
{
a[c][f]=r[c][i+f];
}
}
for(c=0;c<n;c++)
{
r[c][n]=0;
}
for(c=0;c<n;c++)
{
for(f=0;f<n;f++)
{
r[c][n]=r[c][n]+(a[c][f])*(t[f]);
}
}
cout<<"\n";
cout.precision(2);
for(c=0;c<n; c++)
{
cout<<"\n\n X"<<c+1<<" = "<<r[c][n];
}
getch();
}
int determinante(double a[MAX][MAX], int n)
{
int e,ee,c,f,cc,ff,h,R,re;
double r[50][50],d,g,b,ed;
e = 0;
for(c=0;c<1;c++)
{
b=a[c][c];
if(b != 0 )
{
for(f=0;f<n;f++)
{
a[c][f]=(a[c][f])/b;
r[c][f]=a[c][f];
}
for(ee=0;ee<n;ee++)
{
for(ff=0;ff<n;ff++)
{
}
}

for(cc=e;cc<n;cc++)
{
d=a[cc+1][c];
for(ff=0;ff<n;ff++)
{
r[cc+1][ff]=((-1*d)*(a[c][ff]))+(a[cc+1][ff]);
a[cc][ff]=r[cc][ff];
}

}
e=e+1;
if(c>0 )
{
for(cc=0;cc<c;cc++)
{
g=r[cc][c];
for(ff=0;ff<n;ff++)
{
r[cc][ff]=((-1*g)*(a[c][ff]))+(a[cc][ff]);
a[cc][ff]=r[cc][ff];
}
}
}
if(c<n)
{
for(cc=0;cc<n;cc++)
{
for(ff=0;ff<n;ff++)
{
}
}}
}
else
{
for(cc=c;cc<n;cc++)
{
h=a[cc][c];
if(h != 0)
{
h=cc;
}

}
cout<<"\n Sumamos R"<<h+1<<" a R"<<c+1<<"\n";
for(f=c;f<n;f++)
{
a[c][f]=a[c][f]+a[h][f];
}
b=a[c][c];
for(f=0;f<n;f++)
{

a[c][f]=(a[c][f])/b;
r[c][f]=a[c][f];

cout<<"\n\n \n\n";
for(cc=e;cc<n;cc++)
{
d=a[cc+1][c];
for(ff=0;ff<n;ff++)
{
r[cc+1][ff]=((-1*d)*(a[c][ff]))+(a[cc+1][ff]);
a[cc][ff]=r[cc][ff];
}
}
e=e+1;
if(c>0)
{
for(cc=0;cc<c;cc++)
{
g=r[cc][c];
for(ff=0;ff<n;ff++)
{
r[cc][ff]=((-1*g)*(a[c][ff]))+(a[cc][ff]);
a[cc][ff]=r[cc][ff];
}
}
}
}
}
R=0;
for(c=0;c<n;c++)
{
for(f=0;f<n;f++)
{
d =a[c][f];
if ( d != 0)
{
R=R+0;
}
else
{
R=R+1;
}
}
}
re=n*(n-1);
if(re>R)
{
re=0;
system("cls");
cout<<"\n\n Matriz Con solucion.\n\n";
}
else

{
re=1;
system("cls");
cout<<"\n\n Matriz sin solucion . Determinante igual a 0 , por lo tanto la matriz no tendra
solucion como se muestra a continuacion.\n\n";
}
getch();
return re;
}
double copiar(double a[MAX][MAX],int n,double b[MAX][MAX])
{
int c,f,i;
for(c=0;c<n;c++)
{
for(f=0;f<n+1;f++)
{
b[c][f]=a[c][f];
}
}
return 0;
}
void metodinversa(){
char N[50000],SN[50000],S[50000],C[50000],F[50000];
int s,n,c,sn,v,f,d;
double a[50][50],b[50][50];
do{system("cls");
inicia(N);
inicia(SN);
cout<<"
RESOLUCION DE SISTEMAS DE ECUACIONES";
cout<<"\n
MATRIZ INVERSA";
cout<<"\n\n\n\n\n\n\n\n\n\ Ingrese la dimension de la matriz: ";
scanf("%d",&n);
}while(n<1);
if(n>1)
{
captura(a,n);
cout<<"\n";
copiar(a,n,b);
d=determinante(b,n);
metodogaussjordan(a,n);
cout<<"\n\n";
cout.precision(2);
system("pause");
}
else
{
cout<<"\n\n No es una matriz , eso es solo una igualdad , el valor de tu incognita es el
siguiente :";
getch();
captura(a,n);
imprimir(a,n);
metodogaussjordan(a,n);
system("pause");
}
}

void gauss(){
char N[50000],SN[50000],S[50000],C[50000],F[50000];
int s,n,c,sn,v,f,d;
double a[50][50],b[50][50];
do{
system("cls");
inicia(N);
inicia(SN);
cout<<"
RESOLUCION DE SISTEMAS DE ECUACIONES";
cout<<"\n
GAUSS - JORDAN";
cout<<"\n\n\n\n\n\n\n\n\n\ Ingrese la dimension de la matriz: ";
scanf("%d",&n);
}while(n<1);
if(n>1)
{
captura(a,n);
cout<<"\n";
copiar(a,n,b);
d=determinante(b,n);
metodo2(a,n);
cout<<"\n\n";
cout.precision(2);
system("pause");
}
else
{
cout<<"\n\n No es una matriz , eso es solo una igualdad , el valor de tu incognita es el
siguiente :";
getch();
captura(a,n);
imprimir(a,n);
metodo2(a,n);
system("pause");
}
}
char inicia (char *op)
{
int c;
for(c=0 ; c<50; c++)
{
op[c]=' ';
}
return *op;
}
void metodo3(double a[MAX][MAX], int n){
int e,ee,c,f,cc,ff,h,i;
double r[50][50],d,g,b,j[50][50],t[50];
e = 0;
for(c=0;c<n;c++)
{
t[c]=a[c][n];
}
for(c=0;c<n;c++)
{
for(f=0;f<n*2 ;f++)
{

j[c][f]=0;
}
}
i=n;
for(c=0;c<n;c++)
{
j[c][i+c]= 1;
}
for(c=0;c<n;c++)
{
for(f=0;f<n;f++)
{
j[c][f]=a[c][f];
}
}
for(c=0;c<n;c++)
{
for(f=0;f<n*2 ;f++)
{
a[c][f]=j[c][f];
}
}
for(c=0;c<n;c++)
{
b=a[c][c];
if(b != 0 )
{
for(f=0;f<n*2;f++)
{
a[c][f]=(a[c][f])/b;
r[c][f]=a[c][f];
}
for(cc=e;cc<n;cc++)
{
d=a[cc+1][c];
for(ff=0;ff<n*2;ff++)
{
r[cc+1][ff]=((-1*d)*(a[c][ff]))+(a[cc+1][ff]);
a[cc][ff]=r[cc][ff];
}
}
e=e+1;
if(c>0 )
{
for(cc=0;cc<c;cc++)
{
g=r[cc][c];
for(ff=0;ff<n*2;ff++)
{
r[cc][ff]=((-1*g)*(a[c][ff]))+(a[cc][ff]);
a[cc][ff]=r[cc][ff];
}
}
}

}
else
{

for(cc=c;cc<n;cc++)
{
h=a[cc][c];
if(h != 0)
{
h=cc;
}
}

for(f=c;f<n*2;f++)
{
a[c][f]=a[c][f]+a[h][f];
}
imprimir(a,n);
b=a[c][c];
for(f=0;f<n*2;f++)
{

a[c][f]=(a[c][f])/b;
r[c][f]=a[c][f];

for(cc=e;cc<n;cc++)
{
d=a[cc+1][c];
for(ff=0;ff<n*2;ff++)
{
r[cc+1][ff]=((-1*d)*(a[c][ff]))+(a[cc+1][ff]);

a[cc][ff]=r[cc][ff];
}
}
e=e+1;
if(c>0 )
{
for(cc=0;cc<c;cc++)
{
g=r[cc][c];
for(ff=0;ff<n*2;ff++)
{
r[cc][ff]=((-1*g)*(a[c][ff]))+(a[cc][ff]);
a[cc][ff]=r[cc][ff];
}
}
}
}
}
for(c=0;c<n;c++)
{
for(f=0;f<n;f++)
{

a[c][f]=r[c][i+f];
}
}
for(c=0;c<n;c++)
{
r[c][n]=0;
}
for(c=0;c<n;c++)
{
for(f=0;f<n;f++)
{
r[c][n]=r[c][n]+(a[c][f])*(t[f]);
}
}
cout<<"\n";
cout.precision(2);
for(c=0;c<n; c++)
{
cout<<"\n\n X"<<c+1<<" = "<<r[c][n];
}
getch();
}
void metdet(){
char N[50000],SN[50000],S[50000],C[50000],F[50000];
int s,n,c,sn,v,f,d;
double a[50][50],b[50][50];
do{
system("cls");
inicia(N);
inicia(SN);
cout<<"
RESOLUCION DE SISTEMAS DE ECUACIONES";
cout<<"\n
GAUSS - JORDAN";
cout<<"\n\n\n\n\n\n\n\n\n\ Ingrese la dimension de la matriz: ";
scanf("%d",&n);
}while(n<1);
if(n>1)
{
captura(a,n);
cout<<"\n";
copiar(a,n,b);
d=determinante(b,n);
printf("El determinante del sistema es: %d\n",d);
metodo2(a,n);
cout<<"\n\n";
cout.precision(2);
system("pause");
}
else
{
cout<<"\n\n No es una matriz , eso es solo una igualdad , el valor de tu incognita es el
siguiente :";
getch();
captura(a,n);

imprimir(a,n);
metodo2(a,n);
system("pause");
}
}

Вам также может понравиться