elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Calcular determinante de una matriz NxN
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Calcular determinante de una matriz NxN  (Leído 15,438 veces)
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Calcular determinante de una matriz NxN
« en: 12 Febrero 2013, 21:39 pm »

Os dejo aquí un programa que me creé para calcular determinantes de matrices NxN. Personalmente no me gustan los algoritmos recursivos, pero funcionan de maravilla en este caso :)

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. void MostrarMatriz(int** Matriz,unsigned int MAX);
  7. void Leer_matriz(int** a,unsigned int MAX);
  8. int CalcularDeterminante(int** Matriz,unsigned int MAX);
  9.  
  10. int main(int argc, char *argv[])
  11. {
  12.    int Tamanyo;
  13.  
  14.    while(1)
  15.    {
  16.        cout<<"Indica el tamanyo de la matriz: ";
  17.        cin>>Tamanyo;
  18.  
  19.        if (Tamanyo < 2)
  20.            Tamanyo = 2;
  21.  
  22.        cout<<endl<<"Inserta los elementos de la matriz: "<<endl<<endl;
  23.  
  24.        int** Matriz;
  25.        Matriz = new int*[Tamanyo];
  26.  
  27.        for (int i = 0; i<Tamanyo; i++)
  28.            Matriz[i] = new int[Tamanyo];
  29.  
  30.        Leer_matriz(Matriz,Tamanyo);
  31.        cout<<endl<<endl<<endl;
  32.        MostrarMatriz(Matriz,Tamanyo);
  33.        cout<<endl<<endl<<endl;
  34.        cout<<"El determinante es: "<<CalcularDeterminante(Matriz,Tamanyo);
  35.        cout<<endl<<endl<<endl;
  36.        system("PAUSE");
  37.        system("PAUSE");
  38.        system("CLS");
  39.    }
  40.    return EXIT_SUCCESS;
  41. }
  42.  
  43. int CalcularDeterminante(int** Matriz,unsigned int MAX)
  44. {
  45.  
  46.    if (MAX == 2)
  47.    {
  48.        return (Matriz[0][0]*Matriz[1][1] - Matriz[0][1]*Matriz[1][0]);
  49.    }
  50.    else
  51.    {
  52.        int Actual = 0;
  53.        int k = 0;
  54.        int Numero = 0;
  55.        short Multriplicador;
  56.        int** Buffer; // Creo una nueva matriz para hacer los adjuntos
  57.        Buffer = new int*[MAX-1];
  58.  
  59.        for (int i = 0; i<(MAX-1); i++)
  60.            Buffer[i] = new int[MAX-1];
  61.  
  62.        for (int l = 0; l < MAX; l++) // Desarrollo por filas
  63.        {
  64.            for (int j = 1; j < MAX; j++) // Creo una nueva matriz adjunta
  65.            {
  66.                for (int i = 0; i < MAX; i++)
  67.                {
  68.                    if (i != l)
  69.                    {
  70.                        Buffer[k][j-1] = Matriz[i][j];
  71.                        k++;
  72.                    }
  73.                }
  74.                k = 0;
  75.            }
  76.  
  77.            if ( l % 2 != 0)
  78.                Multriplicador = -1;
  79.            else
  80.                Multriplicador = 1;
  81.            Numero += (Matriz[l][0]*CalcularDeterminante(Buffer,MAX-1)*Multriplicador);
  82.        }
  83.        return Numero;
  84.    }
  85. }
  86.  
  87. void MostrarMatriz(int** Matriz,unsigned int MAX)
  88. {
  89.    for (int j = 0; j < MAX; j++)
  90.    {
  91.        cout<<endl<<" (  ";
  92.        for (int i = 0; i < MAX; i++)
  93.            cout<<Matriz[i][j]<<"  ";
  94.  
  95.  
  96.        cout<<") ";
  97.    }
  98. }
  99.  
  100. void Leer_matriz(int** a,unsigned int MAX)
  101. {
  102.    int i,j;
  103.  
  104.    for (j = 0; j < MAX; j++)
  105.        for (i = 0; i < MAX; i++)
  106.        {
  107.            cout<<"Introduce el numero para la posicion ("<<i<<","<<j<<") "<<endl;
  108.            cin>>a[i][j];
  109.        }
  110. }
  111.  
  112.  

Consejos, mejoras ;)


« Última modificación: 12 Febrero 2013, 21:44 pm por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Calcular determinante de una matriz NxN
« Respuesta #1 en: 13 Febrero 2013, 20:35 pm »

Os dejo aquí un programa que me creé para calcular determinantes de matrices NxN. Personalmente no me gustan los algoritmos recursivos, pero funcionan de maravilla en este caso :)


Consejos, mejoras ;)

Y tanto que funciona bien ¡ ¡ ¡

Sólo unas pequeñas observaciones:

* Si el tamaño es 1 el determinante es el número y en tu código lo transformas automáticamente en un determinante de 2x2.

* Cambiaría, para que no resulte "espesa" la entrada de datos y que los índices sean "matemáticos" (no se suele usar en cálculo (0,0) sino (1,1) para la primera posición):

Código
  1. void Leer_matriz(int** a,unsigned int MAX)
  2. {
  3.    int i,j;
  4.    cout<<"Introduce el numero para la posicion: "<<endl;
  5.    for (j = 0; j < MAX; j++)
  6.        for (i = 0; i < MAX; i++)
  7.        {
  8.            cout<<" ("<<i+1<<","<<j+1<<") = ";
  9.            cin>>a[i][j];
  10.        }
  11. }

Como ves, chorradas al fin y al cabo.

Saluditos!.

P.D:Y gracias por compartir
;-) ;-) ;-)


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[C] Calcular determinante de una matriz de orden 'n'
Programación C/C++
Kasswed 9 39,753 Último mensaje 24 Enero 2013, 15:37 pm
por flony
Determinante matriz de orden 'N'
Programación C/C++
juancaa 1 12,293 Último mensaje 7 Febrero 2012, 12:29 pm
por ghastlyX
Ayuda! Calcular determinante en Java
Java
juancaa 4 11,173 Último mensaje 14 Agosto 2012, 18:41 pm
por adwind
[C] [Source] Determinante Matriz orden "N"
Programación C/C++
juancaa 0 3,183 Último mensaje 13 Junio 2012, 02:26 am
por juancaa
programa en turbo c++ que me calcule el determinante de una matriz nxn
Programación General
bmjhon 1 2,429 Último mensaje 8 Noviembre 2016, 05:35 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines