C-Programm zum Multiplizieren zweier Matrizen mit Zeigern

C-Programm zum Multiplizieren zweier Matrizen mit Zeigern

Schreiben Sie ein C-Programm, um zwei Matrizen mit Zeigern zu multiplizieren. Wie man zwei Matrizen mit Zeigern in der C-Programmierung eingibt und multipliziert. Logik zum Multiplizieren von zwei Matrix mit Zeiger in C.

Beispiel

Eingabe

Input elements of matrix1:
10 20 30
40 50 60
70 80 90
Input elements of matrix2:
1 2 3
4 5 6
7 8 9

Ausgabe

Product of matrices is :
300 360 420
660 810 960
1020 1260 1500

Erforderliche Kenntnisse

Funktionen, Array, Zeiger, Zeiger und Arrays

Wie multipliziert man zwei Matrizen?

Die Multiplikation zweier Matrizen ist nur definiert, wenn die Spalten der ersten Matrix gleich den Zeilen der zweiten Matrix sind. Die Multiplikation zweier Matrizen ist definiert durch

Wie multipliziert man zwei Matrizen mit Zeigern?

In früheren Beiträgen haben wir gelernt, wie man mit einem Zeiger auf ein mehrdimensionales Array zugreift. Hier in diesem Beitrag werden wir unser Lernen weiter fortsetzen und lernen, zwei Matrizen mit Zeigern zu multiplizieren.

Die Logik dieses Programms unterscheidet sich nicht von dem Programm zum Multiplizieren zweier Matrizen unter Verwendung der Array-Notation. In diesem Beitrag werde ich erklären, wie man die Array-Notation der Matrixmultiplikation in die Pointer-Notation umwandelt. Das wird Ihnen helfen, Ihr Pointer-Wissen zu verbessern.

In der Array-Notation zum Multiplizieren zweier Matrizen verwenden wir sum += A[row][i] * B[i][col]; was in Zeigerschreibweise äquivalent zu sum += (*(*(A + row) + i)) * (*(*(B + i) + col)); ist

Programm zum Multiplizieren zweier Matrizen mit Zeigern?

/**
 * C program to multiply two matrix using pointers
 */

#include <stdio.h>

#define ROW 3
#define COL 3


/* Function declarations */
void matrixInput(int mat[][COL]);
void matrixPrint(int mat[][COL]);
void matrixMultiply(int mat1[][COL], int mat2[][COL], int res[][COL]);



int main()
{
    int mat1[ROW][COL];
    int mat2[ROW][COL];
    int product[ROW][COL];


    /*
     * Input elements in matrices.
     */
    printf("Enter elements in first matrix of size %dx%d\n", ROW, COL);
    matrixInput(mat1);

    printf("Enter elements in second matrix of size %dx%d\n", ROW, COL);
    matrixInput(mat2);


    // Call function to multiply both matrices
    matrixMultiply(mat1, mat2, product);


    // Print product of both matrix
    printf("Product of both matrices is : \n");
    matrixPrint(product);

    return 0;
}



/**
 * Function to input elements in matrix from user.
 *
 * @mat     Two-dimensional array to store user input.
 */
void matrixInput(int mat[][COL])
{
    int row, col;

    for (row = 0; row < ROW; row++)
    {
        for (col = 0; col < COL; col++)
        {
            scanf("%d", (*(mat + row) + col));
        }
    }
}




/**
 * Function to print elements in a two-dimensional array.
 *
 * @mat     Two-dimensional array to print.
 */
void matrixPrint(int mat[][COL])
{
    int row, col;

    for (row = 0; row < ROW; row++)
    {
        for (col = 0; col < COL; col++)
        {
            printf("%d ", *(*(mat + row) + col));
        }

        printf("\n");
    }
}




/**
 * Function to multiply two matrices.
 *
 * @mat1    First matrix
 * @mat2    Second matrix
 * @res     Resultant matrix to store product of both matrices.
 */
void matrixMultiply(int mat1[][COL], int mat2[][COL], int res[][COL])
{
    int row, col, i;
    int sum;


    for (row = 0; row < ROW; row++)
    {
        for (col = 0; col < COL; col++)
        {
            sum = 0;

            /*
             * Find sum of product of each elements of 
             * rows of first matrix and columns of second 
             * matrix.
             */
            for (i = 0; i < COL; i++)
            {
                sum += (*(*(mat1 + row) + i)) * (*(*(mat2 + i) + col));
            }


            /* 
             * Store sum of product of row of first matrix 
             * and column of second matrix to resultant matrix.
             */
            *(*(res + row) + col) = sum;
        }
    }
}

Ausgabe

Enter elements in first matrix of size 3x3
10 20 30
40 50 60
70 80 90
Enter elements in second matrix of size 3x3
1 2 3
4 5 6
7 8 9
Product of both matrices is :
300 360 420
660 810 960
1020 1260 1500

Empfohlene Beiträge

  • C-Programm zum Kopieren eines Arrays in ein anderes mithilfe von Zeigern.
  • C-Programm zum Austauschen zweier Arrays mit Zeiger.
  • C-Programm zum Umkehren eines Arrays mithilfe von Zeigern.
  • C-Programm zum Suchen eines Elements in einem Array mithilfe von Zeigern.
  • C-Programm zum Sortieren von Arrays mit Zeigern.
  • C-Programm zum Addieren zweier Matrizen mit Zeigern.