Scrivi un programma C per moltiplicare due matrici usando i puntatori. Come inserire e moltiplicare due matrici usando il puntatore nella programmazione C. Logica per moltiplicare due matrici usando il puntatore in C.
Esempio
Inserimento
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
Uscita
Product of matrices is : 300 360 420 660 810 960 1020 1260 1500
Conoscenze richieste
Funzioni, Array, Puntatori, Puntatore e Array
Come si moltiplicano due matrici?
La moltiplicazione di due matrici è definita solo se le colonne della prima matrice sono uguali alle righe della seconda matrice. La moltiplicazione di due matrici è definita da
Come moltiplicare due matrici usando i puntatori?
Nei post precedenti abbiamo imparato ad accedere a un array multidimensionale usando il puntatore. Qui in questo post continueremo ulteriormente il nostro apprendimento e impareremo a moltiplicare due matrici usando i puntatori.
La logica di questo programma non sarà diversa dal programma per moltiplicare due matrici usando la notazione array. In questo post spiegherò come convertire la notazione di matrice della moltiplicazione di matrice in notazione di puntatore. Ciò ti aiuterà a migliorare la tua conoscenza del puntatore.
Nella notazione di matrice per moltiplicare due matrici utilizziamo sum += A[row][i] * B[i][col];
che nella notazione del puntatore equivale a sum += (*(*(A + row) + i)) * (*(*(B + i) + col));
Programma per moltiplicare due matrici usando i puntatori?
/**
* 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;
}
}
}
Uscita
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
Post consigliati - Programma C per copiare un array in un altro usando i puntatori.
- Programma C per scambiare due array usando il puntatore.
- Programma C per invertire un array usando i puntatori.
- Programma C per cercare un elemento nell'array usando i puntatori.
- Programma C per ordinare l'array usando i puntatori.
- Programma C per aggiungere due matrici usando i puntatori.