Programa para multiplicar dos arrays

Dadas dos arrays, la tarea de multiplicarlas. Las arrays pueden ser cuadradas o rectangulares.

Ejemplos: 

(Square Matrix Multiplication)
Input : mat1[m][n] = {
             {1, 1},
            {2, 2}
        }
        mat2[n][p] = {
            {1, 1},
            {2, 2}
        }
Output : result[m][p] = {
             {3, 3},
            {6, 6}
         }

(Rectangular Matrix Multiplication)
Input : mat1[3][2] = {
             {1, 1},
            {2, 2},
            {3, 3}
        }
        mat2[2][3] = {
            {1, 1, 1},
            {2, 2, 2}
        }
Output : result[3][3] = {
             {3, 3, 3},
            {6, 6, 6},
            {9, 9, 9}
         }

Multiplicación de dos Arrays Cuadradas o Rectangulares:

Este programa puede multiplicar dos arrays cuadradas o rectangulares cualesquiera.

El siguiente programa multiplica dos arrays cuadradas de tamaño 4 * 4.

También hay un ejemplo de array rectangular para el mismo código (comentado más abajo).

Podemos cambiar el valor de Matrix con el número de filas y columnas (de MACRO) para Matrix-1 y Matrix-2 para diferentes dimensiones.

Nota : i- El número de columnas en la Array-1 debe ser igual al número de filas en la Array-2.

           ii- Salida de la multiplicación de Array-1 y Array-2, resultados con igual al número de filas de Array-1 y 

                 el número de columnas de Matrix-2, es decir, rslt[R1][C2].

C

/*
 * This C program can multiply any two square or rectangular matrices.
 * The below program multiplies two square matrices of size 4 * 4.
 * There is also an example of a rectangular matrix for the same code (commented below).
 * We can change the Matrix value with the number of rows and columns (from MACROs) for Matrix-1
 * and Matrix-2 for different dimensions.
 */
 
/*
 * Note:  i- The number of columns in Matrix-1 must be equal to the number of rows in Matrix-2.
 *       ii- Output of multiplication of Matrix-1 and Matrix-2, results with equal to the number
 *           of rows of Matrix-1 and the number of columns of Matrix-2 i.e. rslt[R1][C2].
 */
 
#include <stdio.h>
#include <stdlib.h>
 
// Edit MACROs here, according to your Matrix Dimensions for mat1[R1][C1] and mat2[R2][C2]
#define R1 4            // number of rows in Matrix-1
#define C1 4            // number of columns in Matrix-1
#define R2 4            // number of rows in Matrix-2
#define C2 4            // number of columns in Matrix-2
 
void mulMat(int mat1[][C1], int mat2[][C2]) {
    int rslt[R1][C2];
 
    printf("Multiplication of given two matrices is:\n\n");
 
    for (int i = 0; i < R1; i++) {
        for (int j = 0; j < C2; j++) {
            rslt[i][j] = 0;
 
            for (int k = 0; k < R2; k++) {
                rslt[i][j] += mat1[i][k] * mat2[k][j];
            }
 
            printf("%d\t", rslt[i][j]);
        }
 
        printf("\n");
    }
}
 
int main(void) {
    // Square Matrices
    // R1 = 4, C1 = 4 and R2 = 4, C2 = 4 (Update these values in MACROs)
    int mat1[R1][C1] = {
            {1, 1, 1, 1},
            {2, 2, 2, 2},
            {3, 3, 3, 3},
            {4, 4, 4, 4}
    };
 
    int mat2[R2][C2] = {
            {1, 1, 1, 1},
            {2, 2, 2, 2},
            {3, 3, 3, 3},
            {4, 4, 4, 4}
    };
 
    /*
    // Rectangular Matrices
    // R1 = 3, C1 = 4 and R2 = 4, C2 = 3 (Update these values in MACROs)
    int mat1[R1][C1] = {
            {1, 1, 1, 1},
            {2, 2, 2, 2},
            {3, 3, 3, 3}
    };
 
    int mat2[R2][C2] = {
            {1, 1, 1},
            {2, 2, 2},
            {3, 3, 3},
            {4, 4, 4}
    };
    */
 
    if (C1 != R2) {
        printf("The number of columns in Matrix-1  must be equal to the number of rows in "
                "Matrix-2\n");
        printf("Please update MACROs value according to your array dimension in "
                "#define section\n");
 
        exit(EXIT_FAILURE);
    }
 
    mulMat(mat1, mat2);
 
    return 0;
}
 
// This code is contributed by Manish Kumar (mkumar2789)

C++

/*
 * This C++ program can multiply any two square or rectangular matrices.
 * The below program multiplies two square matrices of size 4 * 4.
 * There is also an example of a rectangular matrix for the same code (commented below).
 * We can change the Matrix value with the number of rows and columns (from MACROs) for Matrix-1
 * and Matrix-2 for different dimensions.
 */
 
/*
 * Note:  i- The number of columns in Matrix-1 must be equal to the number of rows in Matrix-2.
 *       ii- Output of multiplication of Matrix-1 and Matrix-2, results with equal to the number
 *           of rows of Matrix-1 and the number of columns of Matrix-2 i.e. rslt[R1][C2].
 */
 
#include <iostream>
 
using namespace std;
 
// Edit MACROs here, according to your Matrix Dimensions for mat1[R1][C1] and mat2[R2][C2]
#define R1 4            // number of rows in Matrix-1
#define C1 4            // number of columns in Matrix-1
#define R2 4            // number of rows in Matrix-2
#define C2 4            // number of columns in Matrix-2
 
void mulMat(int mat1[][C1], int mat2[][C2]) {
    int rslt[R1][C2];
 
    cout << "Multiplication of given two matrices is:\n" << endl;
 
    for (int i = 0; i < R1; i++) {
        for (int j = 0; j < C2; j++) {
            rslt[i][j] = 0;
 
            for (int k = 0; k < R2; k++) {
                rslt[i][j] += mat1[i][k] * mat2[k][j];
            }
 
            cout << rslt[i][j] << "\t";
        }
 
        cout << endl;
    }
}
 
int main(void) {
    // Square Matrices
    // R1 = 4, C1 = 4 and R2 = 4, C2 = 4 (Update these values in MACROs)
    int mat1[R1][C1] = {
            {1, 1, 1, 1},
            {2, 2, 2, 2},
            {3, 3, 3, 3},
            {4, 4, 4, 4}
    };
 
    int mat2[R2][C2] = {
            {1, 1, 1, 1},
            {2, 2, 2, 2},
            {3, 3, 3, 3},
            {4, 4, 4, 4}
    };
 
    /*
    // Rectangular Matrices
    // R1 = 3, C1 = 4 and R2 = 4, C2 = 3 (Update these values in MACROs)
    int mat1[R1][C1] = {
                {1, 1, 1, 1},
                {2, 2, 2, 2},
                {3, 3, 3, 3}
    };
 
    int mat2[R2][C2] = {
                {1, 1, 1},
                {2, 2, 2},
                {3, 3, 3},
                {4, 4, 4}
    };
    */
 
    if (C1 != R2) {
        cout << "The number of columns in Matrix-1  must be equal to the number of rows in "
                "Matrix-2" << endl;
        cout << "Please update MACROs according to your array dimension in #define section"
                << endl;
 
        exit(EXIT_FAILURE);
    }
 
    mulMat(mat1, mat2);
 
    return 0;
}
 
// This code is contributed by Manish Kumar (mkumar2789)

Java

/*
 * This Java program can multiply any two square or
 * rectangular matrices. The below program multiplies two
 * square matrices of size 4 * 4. There is also an example
 * of a rectangular matrix for the same code (commented
 * below). We can change the Matrix value with the number of
 * rows and columns for Matrix-1 and Matrix-2
 * for different dimensions.
 */
  
/*
 * Note:  i- The number of columns in Matrix-1 must be equal
 * to the number of rows in Matrix-2. ii- Output of
 * multiplication of Matrix-1 and Matrix-2, results with
 * equal to the number of rows of Matrix-1 and the number of
 * columns of Matrix-2 i.e. rslt[R1][C2].
 */
 
import java.io.*;
import java.util.*;
 
class GFG {
     
    static int R1 = 4; // number of rows in Matrix-1
    static int C1 = 4; // number of columns in Matrix-1
    static int R2 = 4; // number of rows in Matrix-2
    static int C2 = 4; // number of columns in Matrix-2
     
    // This function multiplies mat1[][]
    // and mat2[][], and stores the result
    // in res[][]
    static void mulMat(int[][] mat1, int[][] mat2)
    {
        // To store result
        int[][] rslt = new int[R1][C2];
        System.out.println("Multiplication of given two matrices is:");
        int i, j, k;
        for (i = 0; i < R1; i++) {
            for (j = 0; j < C2; j++) {
                rslt[i][j] = 0;
                for (k = 0; k < R2; k++)
                    rslt[i][j] += mat1[i][k] * mat2[k][j];
                System.out.print(rslt[i][j] + " ");
            }
            System.out.println("");
        }
    }
     
    // Driver program
    public static void main (String[] args) {
        int[][] mat1 = { { 1, 1, 1, 1 },
                         { 2, 2, 2, 2 },
                         { 3, 3, 3, 3 },
                         { 4, 4, 4, 4 } };
  
        int[][] mat2 = { { 1, 1, 1, 1 },
                         { 2, 2, 2, 2 },
                         { 3, 3, 3, 3 },
                         { 4, 4, 4, 4 } };
                          
        /*
        // Rectangular Matrices
        // R1 = 3, C1 = 4 and R2 = 4, C2 = 3 (Update these values in the global variables)
        int mat1[][] = {
                        {1, 1, 1, 1},
                        {2, 2, 2, 2},
                        {3, 3, 3, 3} };
      
        int mat2[][] = {
                        {1, 1, 1},
                        {2, 2, 2},
                        {3, 3, 3},
                        {4, 4, 4} };
        */
  
        if (C1 != R2) {
            System.out.println("The number of columns in Matrix-1  must be equal to the number of rows in Matrix-2");
            System.out.println("Please update the global variables according to your array dimension");
        }
        else {
            mulMat(mat1, mat2);
        }
    }
}
//This code is contributed by shruti456rawal

Python3

# 4x4 matrix multiplication using Python3
# Function definition
def mulMat(mat1, mat2, R1, R2, C1, C2):
    # List to store matrix multiplication result
    rslt = [[0, 0, 0, 0],
            [0, 0, 0, 0],
            [0, 0, 0, 0],
            [0, 0, 0, 0]]
 
    for i in range(0, R1):
        for j in range(0, C2):
            for k in range(0, R2):
                rslt[i][j] += mat1[i][k] * mat2[k][j]
 
    for i in range(0, R1):
        for j in range(0, C2):
            print(rslt[i][j], end=" ")
        print("\n", end="")
 
 
R1 = 4
R2 = 4
C1 = 4
C2 = 4
 
# First matrix. M is a list
mat1 = [[1, 1, 1, 1],
        [2, 2, 2, 2],
        [3, 3, 3, 3],
        [4, 4, 4, 4]]
 
# Second matrix. N is a list
mat2 = [[1, 1, 1, 1],
        [2, 2, 2, 2],
        [3, 3, 3, 3],
        [4, 4, 4, 4]]
 
if C1 != R2:
    print("The number of columns in Matrix-1  must be equal to the number of rows in " + "Matrix-2", end='')
    print("\n", end='')
    print("Please update MACROs according to your array dimension in #define section", end='')
    print("\n", end='')
else:
    # Call matrix_multiplication function
    mulMat(mat1, mat2, R1, R2, C1, C2)
 
# This code is contributed by Aarti_Rathi

C#

/*
 * This C# program can multiply any two square or
 * rectangular matrices. The below program multiplies two
 * square matrices of size 4 * 4. There is also an example
 * of a rectangular matrix for the same code (commented
 * below). We can change the Matrix value with the number of
 * rows and columns (from MACROs) for Matrix-1 and Matrix-2
 * for different dimensions.
 */
 
/*
 * Note:  i- The number of columns in Matrix-1 must be equal
 * to the number of rows in Matrix-2. ii- Output of
 * multiplication of Matrix-1 and Matrix-2, results with
 * equal to the number of rows of Matrix-1 and the number of
 * columns of Matrix-2 i.e. rslt[R1][C2].
 */
 
using System;
 
class GFG {
 
    static int R1 = 4; // number of rows in Matrix-1
    static int C1 = 4; // number of columns in Matrix-1
    static int R2 = 4; // number of rows in Matrix-2
    static int C2 = 4; // number of columns in Matrix-2
 
    // This function multiplies mat1[][]
    // and mat2[][], and stores the result
    // in res[][]
    static void mulMat(int[, ] mat1, int[, ] mat2)
    {
        // To store result
        int[, ] rslt = new int[R1, C2];
        Console.WriteLine(
            "Multiplication of given two matrices is:");
        int i, j, k;
        for (i = 0; i < R1; i++) {
            for (j = 0; j < C2; j++) {
                rslt[i, j] = 0;
                for (k = 0; k < R2; k++)
                    rslt[i, j] += mat1[i, k] * mat2[k, j];
                Console.Write(rslt[i, j] + "\t");
            }
            Console.WriteLine();
        }
    }
 
    // Driver code
    public static void Main()
    {
        int[, ] mat1 = { { 1, 1, 1, 1 },
                         { 2, 2, 2, 2 },
                         { 3, 3, 3, 3 },
                         { 4, 4, 4, 4 } };
 
        int[, ] mat2 = { { 1, 1, 1, 1 },
                         { 2, 2, 2, 2 },
                         { 3, 3, 3, 3 },
                         { 4, 4, 4, 4 } };
 
        if (C1 != R2) {
            Console.WriteLine(
                "The number of columns in Matrix-1  must be equal to the number of rows in Matrix-2");
            Console.WriteLine(
                "Please update MACROs according to your array dimension in #define section");
        }
        else {
            mulMat(mat1, mat2);
        }
    }
}
 
// This code is contributed by Aarti_Rathi

Javascript

var R1 = 4;
// number of rows in Matrix-1
var C1 = 4;
// number of columns in Matrix-1
var R2 = 4;
// number of rows in Matrix-2
var C2 = 4;
// number of columns in Matrix-2
// This function multiplies mat1[][]
// and mat2[][], and stores the result
// in res[][]
function mulMat(mat1, mat2)
{
    // To store result
    var rslt = Array(R1).fill(0).map(()=>new Array(C2).fill(0));
    console.log("Multiplication of given two matrices is:");
    var i = 0;
    var j = 0;
    var k = 0;
    for (i = 0; i < R1; i++)
    {
        for (j = 0; j < C2; j++)
        {
            rslt[i][j] = 0;
            for (k = 0; k < R2; k++)
            {
                rslt[i][j] += mat1[i][k] * mat2[k][j];
            }
            console.log(rslt[i][j] + " ");
        }
        console.log("");
    }
}
// Driver program
 
var mat1 = [[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3], [4, 4, 4, 4]];
var mat2 = [[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3], [4, 4, 4, 4]];
//         // Rectangular Matrices
//         // R1 = 3, C1 = 4 and R2 = 4, C2 = 3 (Update these values in the global variables)
//         int mat1[][] = {
//                         {1, 1, 1, 1},
//                         {2, 2, 2, 2},
//                         {3, 3, 3, 3} };
//         int mat2[][] = {
//                         {1, 1, 1},
//                         {2, 2, 2},
//                         {3, 3, 3},
//                         {4, 4, 4} };
if (C1 != R2)
{
    console.log("The number of columns in Matrix-1 must be equal to the number of rows in Matrix-2");
    console.log("Please update the global variables according to your array dimension");
}
else
{
    mulMat(mat1, mat2);
}
 
// This code is contributed by Aarti_Rathi
Producción

Multiplication of given two arrays is:

10    10    10    10    
20    20    20    20    
30    30    30    30    
40    40    40    40    

Multiplicación de Arrays Cuadradas: 
El siguiente programa multiplica dos arrays cuadradas de tamaño 4*4, podemos cambiar N por diferentes dimensiones. 

C++

// C++ program to multiply
// two square matrices.
#include <iostream>
 
using namespace std;
 
#define N 4
 
// This function multiplies
// mat1[][] and mat2[][], and
// stores the result in res[][]
void multiply(int mat1[][N],
              int mat2[][N],
              int res[][N])
{
    int i, j, k;
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            res[i][j] = 0;
            for (k = 0; k < N; k++)
                res[i][j] += mat1[i][k] * mat2[k][j];
        }
    }
}
 
// Driver Code
int main()
{
    int i, j;
    int res[N][N]; // To store result
    int mat1[N][N] = { { 1, 1, 1, 1 },
                       { 2, 2, 2, 2 },
                       { 3, 3, 3, 3 },
                       { 4, 4, 4, 4 } };
 
    int mat2[N][N] = { { 1, 1, 1, 1 },
                       { 2, 2, 2, 2 },
                       { 3, 3, 3, 3 },
                       { 4, 4, 4, 4 } };
 
    multiply(mat1, mat2, res);
 
    cout << "Result matrix is \n";
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++)
            cout << res[i][j] << " ";
        cout << "\n";
    }
 
    return 0;
}
 
// This code is contributed
// by Soumik Mondal

C

// C program to multiply two square matrices.
#include <stdio.h>
#define N 4
 
// This function multiplies mat1[][] and mat2[][],
// and stores the result in res[][]
void multiply(int mat1[][N], int mat2[][N], int res[][N])
{
    int i, j, k;
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            res[i][j] = 0;
            for (k = 0; k < N; k++)
                res[i][j] += mat1[i][k] * mat2[k][j];
        }
    }
}
 
int main()
{
    int mat1[N][N] = { { 1, 1, 1, 1 },
                       { 2, 2, 2, 2 },
                       { 3, 3, 3, 3 },
                       { 4, 4, 4, 4 } };
 
    int mat2[N][N] = { { 1, 1, 1, 1 },
                       { 2, 2, 2, 2 },
                       { 3, 3, 3, 3 },
                       { 4, 4, 4, 4 } };
 
    int res[N][N]; // To store result
    int i, j;
    multiply(mat1, mat2, res);
 
    printf("Result matrix is \n");
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++)
            printf("%d ", res[i][j]);
        printf("\n");
    }
 
    return 0;
}

Java

// Java program to multiply two square
// matrices.
import java.io.*;
 
class GFG {
 
    static int N = 4;
 
    // This function multiplies mat1[][]
    // and mat2[][], and stores the result
    // in res[][]
    static void multiply(int mat1[][],
                         int mat2[][], int res[][])
    {
        int i, j, k;
        for (i = 0; i < N; i++) {
            for (j = 0; j < N; j++) {
                res[i][j] = 0;
                for (k = 0; k < N; k++)
                    res[i][j] += mat1[i][k]
                                 * mat2[k][j];
            }
        }
    }
 
    // Driver code
    public static void main(String[] args)
    {
        int mat1[][] = { { 1, 1, 1, 1 },
                         { 2, 2, 2, 2 },
                         { 3, 3, 3, 3 },
                         { 4, 4, 4, 4 } };
 
        int mat2[][] = { { 1, 1, 1, 1 },
                         { 2, 2, 2, 2 },
                         { 3, 3, 3, 3 },
                         { 4, 4, 4, 4 } };
 
        // To store result
        int res[][] = new int[N][N];
        int i, j;
        multiply(mat1, mat2, res);
 
        System.out.println("Result matrix"
                           + " is ");
        for (i = 0; i < N; i++) {
            for (j = 0; j < N; j++)
                System.out.print(res[i][j]
                                 + " ");
            System.out.println();
        }
    }
}
 
// This code is contributed by anuj_67.

Python3

# 4x4 matrix multiplication using Python3
# Function definition
def matrix_multiplication(M, N):
    # List to store matrix multiplication result
    R = [[0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]]
 
    for i in range(0, 4):
        for j in range(0, 4):
            for k in range(0, 4):
                R[i][j] += M[i][k] * N[k][j]
 
    for i in range(0, 4):
        for j in range(0, 4):
            # if we use print(), by default cursor moves to next line each time,
            # Now we can explicitly define ending character or sequence passing
            # second parameter as end ="<character or string>"
            # syntax: print(<variable or value to print>, end ="<ending with>")
            # Here space (" ") is used to print a gap after printing
            # each element of R
            print(R[i][j], end =" ")
        print("\n", end ="")
 
# First matrix. M is a list
M = [[1, 1, 1, 1],
    [2, 2, 2, 2],
    [3, 3, 3, 3],
    [4, 4, 4, 4]]
 
# Second matrix. N is a list
N = [[1, 1, 1, 1],
    [2, 2, 2, 2],
    [3, 3, 3, 3],
    [4, 4, 4, 4]]
     
# Call matrix_multiplication function
matrix_multiplication(M, N)
 
# This code is contributed by Santanu

C#

// C# program to multiply two square
// matrices.
using System;
 
class GFG {
 
    static int N = 4;
 
    // This function multiplies mat1[][]
    // and mat2[][], and stores the result
    // in res[][]
    static void multiply(int[, ] mat1,
                         int[, ] mat2, int[, ] res)
    {
        int i, j, k;
        for (i = 0; i < N; i++) {
            for (j = 0; j < N; j++) {
                res[i, j] = 0;
                for (k = 0; k < N; k++)
                    res[i, j] += mat1[i, k]
                                 * mat2[k, j];
            }
        }
    }
 
    // Driver code
    public static void Main()
    {
        int[, ] mat1 = { { 1, 1, 1, 1 },
                         { 2, 2, 2, 2 },
                         { 3, 3, 3, 3 },
                         { 4, 4, 4, 4 } };
 
        int[, ] mat2 = { { 1, 1, 1, 1 },
                         { 2, 2, 2, 2 },
                         { 3, 3, 3, 3 },
                         { 4, 4, 4, 4 } };
 
        // To store result
        int[, ] res = new int[N, N];
        int i, j;
        multiply(mat1, mat2, res);
 
        Console.WriteLine("Result matrix"
                          + " is ");
        for (i = 0; i < N; i++) {
            for (j = 0; j < N; j++)
                Console.Write(res[i, j]
                              + " ");
            Console.WriteLine();
        }
    }
}
 
// This code is contributed by anuj_67.

PHP

<?php
// PHP program to multiply two
// square matrices.
 
// This function multiplies mat1[][] and
// mat2[][], and stores the result in res[][]
function multiply(&$mat1, &$mat2, &$res)
{
    $N = 4;
    for ($i = 0; $i < $N; $i++)
    {
        for ($j = 0; $j < $N; $j++)
        {
            $res[$i][$j] = 0;
            for ($k = 0; $k < $N; $k++)
                $res[$i][$j] += $mat1[$i][$k] *
                                $mat2[$k][$j];
        }
    }
}
 
// Driver Code
$mat1 = array(array(1, 1, 1, 1),
              array(2, 2, 2, 2),
              array(3, 3, 3, 3),
              array(4, 4, 4, 4));
 
$mat2 = array(array(1, 1, 1, 1),
              array(2, 2, 2, 2),
              array(3, 3, 3, 3),
              array(4, 4, 4, 4));
 
multiply($mat1, $mat2, $res);
$N = 4;
echo ("Result matrix is \n");
for ($i = 0; $i < $N; $i++)
{
    for ($j = 0; $j < $N; $j++)
    {
        echo ($res[$i][$j]);
        echo(" ");
    }
    echo ("\n");
}
 
// This code is contributed
// by Shivi_Aggarwal
?>

Javascript

<script>
 
// Javascript program to multiply
// two square matrices.
 
const N = 4;
 
// This function multiplies
// mat1[][] and mat2[][], and
// stores the result in res[][]
function multiply(mat1, mat2, res)
{
    let i, j, k;
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            res[i][j] = 0;
            for (k = 0; k < N; k++)
                res[i][j] += mat1[i][k] * mat2[k][j];
        }
    }
}
 
// Driver Code
    let i, j;
     
    // To store result
    let res = new Array(N);
    for (let k = 0; k < N; k++)
        res[k] = new Array(N);
         
    let mat1 = [ [ 1, 1, 1, 1 ],
                       [ 2, 2, 2, 2 ],
                       [ 3, 3, 3, 3 ],
                       [ 4, 4, 4, 4 ] ];
 
    let mat2 = [ [ 1, 1, 1, 1 ],
                       [ 2, 2, 2, 2 ],
                       [ 3, 3, 3, 3 ],
                       [ 4, 4, 4, 4 ] ];
 
    multiply(mat1, mat2, res);
 
    document.write("Result matrix is <br>");
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++)
            document.write(res[i][j] + " ");
        document.write("<br>");
    }
 
</script>
Producción

Result matrix is 
10 10 10 10 
20 20 20 20 
30 30 30 30 
40 40 40 40 

Complejidad temporal: O(n 3 ). Se puede optimizar utilizando la multiplicación de arrays de Strassen

Espacio Auxiliar: O(n 2 )

Multiplicación de Arrays Rectangulares: 
Usamos punteros en C para multiplicar a arrays. Consulte la siguiente publicación como requisito previo del código.
¿Cómo pasar una array 2D como parámetro en C? 

C++

// C++ program to multiply two
// rectangular matrices
#include <bits/stdc++.h>
using namespace std;
 
// Multiplies two matrices mat1[][]
// and mat2[][] and prints result.
// (m1) x (m2) and (n1) x (n2) are
// dimensions of given matrices.
void multiply(int m1, int m2, int mat1[][2], int n1, int n2,
              int mat2[][2])
{
    int x, i, j;
    int res[m1][n2];
    for (i = 0; i < m1; i++)
    {
        for (j = 0; j < n2; j++)
        {
            res[i][j] = 0;
            for (x = 0; x < m2; x++)
            {
                *(*(res + i) + j) += *(*(mat1 + i) + x)
                                     * *(*(mat2 + x) + j);
            }
        }
    }
    for (i = 0; i < m1; i++)
    {
        for (j = 0; j < n2; j++)
        {
            cout << *(*(res + i) + j) << " ";
        }
        cout << "\n";
    }
}
 
// Driver code
int main()
{
    int mat1[][2] = { { 2, 4 }, { 3, 4 } };
    int mat2[][2] = { { 1, 2 }, { 1, 3 } };
    int m1 = 2, m2 = 2, n1 = 2, n2 = 2;
   
    // Function call
    multiply(m1, m2, mat1, n1, n2, mat2);
    return 0;
}
 
// This code is contributed
// by Akanksha Rai(Abby_akku)

C

// C program to multiply two rectangular matrices
#include <stdio.h>
 
// Multiplies two matrices mat1[][] and mat2[][]
// and prints result.
// (m1) x (m2) and (n1) x (n2) are dimensions
// of given matrices.
void multiply(int m1, int m2, int mat1[][m2], int n1,
              int n2, int mat2[][n2])
{
    int x, i, j;
    int res[m1][n2];
    for (i = 0; i < m1; i++)
    {
        for (j = 0; j < n2; j++)
        {
            res[i][j] = 0;
            for (x = 0; x < m2; x++)
            {
                *(*(res + i) + j) += *(*(mat1 + i) + x)
                                     * *(*(mat2 + x) + j);
            }
        }
    }
    for (i = 0; i < m1; i++)
    {
        for (j = 0; j < n2; j++)
        {
            printf("%d ", *(*(res + i) + j));
        }
        printf("\n");
    }
}
 
// Driver code
int main()
{
    int mat1[][2] = { { 2, 4 }, { 3, 4 } };
    int mat2[][2] = { { 1, 2 }, { 1, 3 } };
    int m1 = 2, m2 = 2, n1 = 2, n2 = 2;
   
    // Function call
    multiply(m1, m2, mat1, n1, n2, mat2);
    return 0;
}

Java

// Java program to multiply two matrices.
 
public class GFG
{
 
    /**
     * to find out matrix multiplication
     *
     * @param matrix1 First matrix
     * @param rows1   Number of rows in matrix 1
     * @param cols1   Number of columns in matrix 1
     * @param matrix2 Second matrix
     * @param rows2   Number of rows in matrix 2
     * @param cols2   Number of columns in matrix 2
     * @return the result matrix (matrix 1 and matrix 2
     * multiplication)
     */
    public static int[][] matrixMultiplication(
        int[][] matrix1, int rows1, int cols1,
        int[][] matrix2, int rows2, int cols2)
        throws Exception
    {
 
        // Required condition for matrix multiplication
        if (cols1 != rows2) {
            throw new Exception("Invalid matrix given.");
        }
 
        // create a result matrix
        int resultMatrix[][] = new int[rows1][cols2];
 
        // Core logic for 2 matrices multiplication
        for (int i = 0; i < resultMatrix.length; i++)
        {
            for (int j = 0;
                 j < resultMatrix[i].length;
                 j++)
            {
                for (int k = 0; k < cols1; k++)
                {
                    resultMatrix[i][j]
                        += matrix1[i][k] * matrix2[k][j];
                }
            }
        }
        return resultMatrix;
    }
 
    // Driver code
    public static void main(String[] args) throws Exception
    {
 
        // Initial matrix 1 and matrix 2
        int matrix1[][] = { { 2, 4 }, { 3, 4 } };
        int matrix2[][] = { { 1, 2 }, { 1, 3 } };
 
        // Function call to get a matrix multiplication
        int resultMatrix[][] = matrixMultiplication(
            matrix1, 2, 2, matrix2, 2, 2);
 
        // Display result matrix
        System.out.println("Result Matrix is:");
        for (int i = 0; i < resultMatrix.length; i++)
        {
            for (int j = 0;
                 j < resultMatrix[i].length;
                 j++)
            {
                System.out.print(resultMatrix[i][j] + "\t");
            }
            System.out.println();
        }
    }
    // This code is contributed by darshatandel1998 (Darshan
    // Tandel)
}

Python3

# Python3 program to multiply two
# rectangular matrices
 
# Multiplies two matrices mat1[][]
# and mat2[][] and prints result.
# (m1) x (m2) and (n1) x (n2) are
# dimensions of given matrices.
def multiply(m1, m2, mat1,
             n1, n2, mat2):
 
    res = [[0 for x in range(n2)]
              for y in range (m1)]
     
    for i in range(m1):
        for j in range(n2):
            res[i][j] = 0
            for x in range(m2):           
                res[i][j] += (mat1[ i][x] *
                              mat2[ x][j])
            
    for i in range(m1):
        for j in range(n2):     
            print (res[i][j],
                   end = " ")       
        print ()
 
# Driver code
if __name__ == "__main__":
   
    mat1 = [[2, 4], [3, 4]]
    mat2 = [[1, 2], [1, 3]]
    m1, m2, n1, n2 = 2, 2, 2, 2
   
    # Function call
    multiply(m1, m2, mat1,
             n1, n2, mat2)
     
# This code is contributed by Chitranayal

C#

// C# program to multiply two
// rectangular matrices
using System;
 
class GFG{
     
// Multiplies two matrices mat1[][]
// and mat2[][] and prints result.
// (m1) x (m2) and (n1) x (n2) are
// dimensions of given matrices.
static void multiply(int m1, int m2, int[,] mat1,
                     int n1, int n2, int[,] mat2)
{
    int x, i, j;
    int[,] res = new int[m1, n2];
     
    for(i = 0; i < m1; i++)
    {
        for(j = 0; j < n2; j++)
        {
            res[i, j] = 0;
             
            for(x = 0; x < m2; x++)
            {
                res[i, j] += (mat1[i, x] *
                              mat2[x, j]);
            }
        }
    }
    for(i = 0; i < m1; i++)
    {
        for(j = 0; j < n2; j++)
        {
            Console.Write(res[i, j] + " ");
        }
        Console.WriteLine();
    }
}
 
// Driver Code
static void Main()
{
    int[,] mat1 = { { 2, 4 }, { 3, 4 } };
    int[,] mat2 = { { 1, 2 }, { 1, 3 } };
    int m1 = 2, m2 = 2, n1 = 2, n2 = 2;
     
    // Function call
    multiply(m1, m2, mat1, n1, n2, mat2);
}
}
 
// This code is contributed by divyeshrabadiya07

PHP

<?php
// PHP program to multiply two
// rectangular matrices
 
// Multiplies two matrices mat1[][] 
// and mat2[][] and prints result.
// (m1) x (m2) and (n1) x (n2) are
// dimensions of given matrices.
function multiply($m1, $m2, $mat1,
                  $n1, $n2, $mat2)
{
    for ($i = 0; $i < $m1; $i++)
    {
        for ($j = 0; $j < $n2; $j++)
        {
            $res[$i][$j] = 0;
            for ($x = 0; $x < $m2; $x++)
            {
                $res[$i][$j] += $mat1[$i][$x] *
                                $mat2[$x][$j];
            }
        }
    }
    for ($i = 0; $i < $m1; $i++)
    {
        for ($j = 0; $j < $n2; $j++)
        {
            echo $res[$i][$j] . " ";
        }
        echo "\n";
    }
}
 
// Driver code
$mat1 = array( array( 2, 4 ), array( 3, 4 ));
$mat2 = array( array( 1, 2 ), array( 1, 3 ));
$m1 = 2;
$m2 = 2;
$n1 = 2;
$n2 = 2;
 
//Function call
multiply($m1, $m2, $mat1, $n1, $n2, $mat2);
 
// This code is contributed by rathbhupendra
?>

Javascript

<script>
 
// Javascript program to multiply two
// rectangular matrices
 
// Multiplies two matrices mat1[][]
// and mat2[][] and prints result.
// (m1) x (m2) and (n1) x (n2) are
// dimensions of given matrices.
function multiply(m1, m2, mat1, n1, n2, mat2)
{
    let x, i, j;
    let res = new Array(m1);
    for (i = 0; i < m1; i++)
        res[i] = new Array(n2);
         
    for (i = 0; i < m1; i++)
    {
        for (j = 0; j < n2; j++)
        {
            res[i][j] = 0;
            for (x = 0; x < m2; x++)
            {
                res[i][j] += mat1[i][x] * mat2[x][j];
            }
        }
    }
    for (i = 0; i < m1; i++)
    {
        for (j = 0; j < n2; j++)
        {
            document.write(res[i][j] + " ");
        }
        document.write("<br>");
    }
}
 
// Driver code
    let mat1 = [ [ 2, 4 ], [ 3, 4 ] ];
    let mat2 = [ [ 1, 2 ], [ 1, 3 ] ];
    let m1 = 2, m2 = 2, n1 = 2, n2 = 2;
   
    // Function call
    multiply(m1, m2, mat1, n1, n2, mat2);
     
</script>
Producción

6 16 
7 18 

Complejidad temporal: O(n 3 ). Se puede optimizar utilizando la multiplicación de arrays de Strassen

Espacio Auxiliar: O(m1 * n2)

Este artículo es una contribución de Aditya Ranjan . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *