Solución al reto del producto de matrices

Bueno, como lo prometido es deduda, os explico la solución del reto de las matrices.

Como puede hacerse

En primer lugar se comprueba que las referencias a las dos matrices recibidas no son nulas y que sus dimensiones permiten su multiplicación. Para ello, debes verificar que el número de elementos de la segunda dimensión (columnas) de la primera matriz es igual al número de elementos de la primera dimensión (filas) de la segunda.

A continuación, se construye la matriz resultado, teniendo en cuenta que sus dimensiones corresponderán al número de filas de la primera matriz y al número de columnas de la segunda. Debes utilizar tres bucles para calcular los elementos de la matriz producto. Los dos bucles más externos recorren las posiciones de la matriz  resultado. El bucle más interno es necesario, ya que cada elemento de la matriz producto debe obtenerse mediante la suma de los produtos de los elementos de una fila de la primera matriz por los elementos de una columna de la segunda. Finalmente, se devuelve la matriz producto.

Parámetros

Dos arrays bidimensionales correspondientes a las matrices que se van a multiplicar.

Valor de retorno

Se devuelve una matriz de enteros correspondiente a la matriz resultado de la multiplicación de las dos matrices recibidas por parámetro. Como las dos matrices de los parámetros son matrices de números enteros, la matriz resultado de la multiplicación es un objeto del tipo int[][].

Solución

public int[][] obtenerMatrizProducto(int m1[][], int[][] m2) {
        if (m1 == null || m2 == null || (m1[0].length != m2.length)) {
            throw new IllegalArgumentException(“Parametros incorrectos”);

}
        int[][] matrizProducto = new int[m1.length][m2[0].length];
        for (int i = 0; i < matrizProducto.length; i++) {
            for (int j = 0; j < matrizProducto[i].length; j++) {
                for (int k = 0; k < m2.length; k++) {
                    matrizProducto[i][j] += m1[i][k] * m2[k][j];
                }
            }
        }
        return matrizProducto;
    }

Anuncios

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 )

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