Cálculo del rango de una matriz

Isaac Velasco Calvo

// Cálculo del rango de una matriz por el método de Gauss


#include <iostream>
using namespace std;
#define DIM 100

main()
{
int sizeX, sizeY;
int rango;
double Matriz [DIM][DIM];

cout << “Dimensiones de la matriz (X x Y): (<DIM)” << endl << “X: “;
cin >> sizeY;
cout << “Y: “;
cin >> sizeX;

rango = sizeY;

if (system(“CLS”)) system(“clear”);

for(int y = 0; y < sizeY; y++)
{
for(int x = 0; x < sizeX; x++)
{
cout << “Matriz actual: ” << endl << endl;

//Dibujar Matriz
for(int i = 0; i < sizeY; i++)
{
for(int j = 0; j < sizeX; j++)
{
/*if(MatrizCheck[x][y]) cout << “-“;
else if(i == y && x == j) cout << “?”;
else cout << Matriz[x][y];*/

if(i == y && x == j) cout << “?”;
else cout << “-“;
}
cout << endl;
}

//Pedir numero
cout << endl << “Numero (” << y+1 << “,” << x+1 << “): “;
cin >> Matriz[x][y];

if (system(“CLS”)) system(“clear”);
}
}

//Dibujo de la Matriz
cout << “Matriz: ” << endl << endl;
for(int y = 0; y < sizeY; y++)
{
for(int x = 0; x < sizeX; x++)
{
cout << Matriz[x][y] << “\t”;
}
cout << endl;
}

cout << endl;

//Calculo de la nueva matriz:
for(int i = 0; i < sizeY-1; i++)
{
cout << “[Test] Se inicia etapa ” << i << endl;
for(int y = (1+i); y < sizeY; y++)
{
float k = Matriz[i][i] / Matriz[i][y];
cout << “[Test] Se inicia k para fila ” << y << ” — k: ” << k << endl;

for(int x = (0+i); x < sizeX; x++)
{
cout << “[Test] Se calcula x: ” << x << ” , y: ” << y << endl;
Matriz[x][y] = Matriz[x][i] – k*Matriz[x][y];
if(Matriz[x][y] < 0.0001) Matriz[x][y]=0;

for(int m = 0; m < sizeY; m++)
{
for(int n = 0; n < sizeX; n++)
{
cout << Matriz[n][m] << “\t”;
}
cout << endl;
}

}
Matriz[i][i+y] = 0;
}
}

//Dibujo final de la Matriz
cout << endl << “Matriz: ” << endl << endl;
for(int y = 0; y < sizeY; y++)
{
for(int x = 0; x < sizeX; x++)
{
cout << Matriz[x][y] << “\t”;
}
cout << endl;
}

//Calcular rango
for(int i = 0; i < sizeY-1; i++)
{
bool nulo = true;
for(int j = 0; j < sizeX; j++)
{
if(Matriz[j][sizeY-i-1] != 0){
nulo = false;
break;
}
}
if(nulo == true) rango–;
}

cout << “Rango: ” << rango;
}

Anuncios

Acerca de programacion1z

Curso de introducción a la programación en C
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s