Multiplicación de matrices en C++

El siguiente código permite la multiplicación de dos matrices 3×3 con elementos de tipo entero:

#include <iostream>
#include <fstream>

using namespace std;

void multmat(int **A, int **B, int **C);

int main() {

   ifstream label1 ("datos//datos.in"); // Abre el archivo de entrada de datos

   // Definición de variables y asignación dinámica de memoria   

   int i, j, k;

   int **A, **B, **C;

   A = new int* [3], B = new int* [3], C = new int* [3];

   for(j=0; j<3; j++){

      A[j] = new int [3], B[j] = new int [3], C[j] = new int [3];

   }   

   // Lectura de las matrices (label1 apunta a datos.in en el subdirectorio datos del home    de usuario)

        for(i=0; i<3; i++){

             for(j=0; j<3; j++){

                    label1 >> A[i][j];

              }

   }

       for(i=0; i<3; i++){

                for(j=0; j<3; j++){

                         label1 >> B[i][j];        
               }

    }

   label1.close(); // Cierra el archivo de datos

   // Multiplicación de matrices A y B

   multmat(A, B, C);

   // Impresión de las matrices

   for(i=0; i<3; i++){

         for(j=0; j<3; j++){

                 cout <<  A[i][j] << " ";

         }

   cout << endl;

     }

   cout << endl;

   for(i=0; i<3; i++){

            for(j=0; j<3; j++){

                   cout <<  B[i][j] << " ";

           }

   cout << endl;

     }

   cout << endl;

   for(i=0; i<3; i++){

         for(j=0; j<3; j++){

                  cout <<  C[i][j] << " ";

         }

         cout << endl;

    }

   delete [] A, B, C; //Desasigna la memoria

   return 0;

}

void multmat(int **A, int **B, int **C){

   int i, j, k;

        for(i=0; i<3; i++){

                for(j=0; j<3; j++){

               C[i][j]=0;         

                        for(k=0; k<3; k++){

                                  C[i][j]= C[i][j]+A[i][k]*B[k][j];

                        }

                }

      }

}

La adaptación con fines particulares queda por cuenta de los interesados. Por otra parte, ha sido elaborado para ser ejecutado con el compilador de C++ de Linux. Para ello, cree una carpeta llamada MULTMAT y copie el código anterior como multmat.c++. Dentro de esa carpeta cree otra carpeta llamada datos y coloque allí el siguiente archivo (datos.in):

1 2 3
4 5 6
7 8 9

1 2 3
4 5 6
7 8 9

Compile, dentro del directorio MULTMAT, de la siguiente manera:

g++ multmat.c++ -o multmat [Enter]

y ejecute con:

./multmat [Enter]

El resultado que aparece en pantalla será el siguiente:

1 2 3
4 5 6
7 8 9

1 2 3
4 5 6
7 8 9

30 36 42
66 81 96
102 126 150

y ha sido verificado por mi. La última matriz es el resultado de multiplicar la primera matriz por la segunda, es decir, por si misma. Lo pueden verificar en una hoja de cálculo. Para usar otras matrices sólo hay que modificar datos.in. Por otra parte, modifiquen el código para que acepte matrices con elemento reales, de orden diferente (donde pueden incluir una prueba de conformidad: el número de columnas de A debe ser igual al número de filas de B), etc.

Esta entrada fue publicada en Código C++. Guarda el enlace permanente.

Una respuesta a Multiplicación de matrices en C++

  1. Pingback: Multiplicación de una matriz NxN, por si misma, n veces |

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. 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 )

Google+ photo

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

Conectando a %s