Programme C pour multiplier deux matrices à l'aide de tableaux multidimensionnels

Dans cet exemple, vous apprendrez à multiplier deux matrices et à les afficher à l'aide de fonctions définies par l'utilisateur.

Pour comprendre cet exemple, vous devez avoir la connaissance des sujets de programmation C suivants:

  • Tableaux C
  • C Tableaux multidimensionnels

Ce programme demande à l'utilisateur de saisir la taille (lignes et colonnes) de deux matrices.

Pour multiplier deux matrices, le nombre de colonnes de la première matrice doit être égal au nombre de lignes de la deuxième matrice .

Le programme ci-dessous demande le nombre de lignes et de colonnes de deux matrices jusqu'à ce que la condition ci-dessus soit satisfaite.

Ensuite, la multiplication de deux matrices est effectuée, et le résultat est affiché à l'écran.

Pour ce faire, nous avons créé trois fonctions:

  • getMatrixElements() - prendre les éléments de la matrice saisis par l'utilisateur.
  • multiplyMatrices() - multiplier deux matrices.
  • display() - pour afficher la matrice résultante après multiplication.

Multiplier les matrices en les passant à une fonction

 #include // function to get matrix elements entered by the user void getMatrixElements(int matrix()(10), int row, int column) ( printf("Enter elements: "); for (int i = 0; i < row; ++i) ( for (int j = 0; j < column; ++j) ( printf("Enter a%d%d: ", i + 1, j + 1); scanf("%d", &matrix(i)(j)); ) ) ) // function to multiply two matrices void multiplyMatrices(int first()(10), int second()(10), int result()(10), int r1, int c1, int r2, int c2) ( // Initializing elements of matrix mult to 0. for (int i = 0; i < r1; ++i) ( for (int j = 0; j < c2; ++j) ( result(i)(j) = 0; ) ) // Multiplying first and second matrices and storing it in result for (int i = 0; i < r1; ++i) ( for (int j = 0; j < c2; ++j) ( for (int k = 0; k < c1; ++k) ( result(i)(j) += first(i)(k) * second(k)(j); ) ) ) ) // function to display the matrix void display(int result()(10), int row, int column) ( printf("Output Matrix:"); for (int i = 0; i < row; ++i) ( for (int j = 0; j < column; ++j) ( printf("%d ", result(i)(j)); if (j == column - 1) printf(""); ) ) ) int main() ( int first(10)(10), second(10)(10), result(10)(10), r1, c1, r2, c2; printf("Enter rows and column for the first matrix: "); scanf("%d %d", &r1, &c1); printf("Enter rows and column for the second matrix: "); scanf("%d %d", &r2, &c2); // Taking input until // 1st matrix columns is not equal to 2nd matrix row while (c1 != r2) ( printf("Error! Enter rows and columns again."); printf("Enter rows and columns for the first matrix: "); scanf("%d%d", &r1, &c1); printf("Enter rows and columns for the second matrix: "); scanf("%d%d", &r2, &c2); ) // get elements of the first matrix getMatrixElements(first, r1, c1); // get elements of the second matrix getMatrixElements(second, r2, c2); // multiply two matrices. multiplyMatrices(first, second, result, r1, c1, r2, c2); // display the result display(result, r1, c2); return 0; )

Production

 Saisissez les lignes et les colonnes de la première matrice: 2 3 Saisissez les lignes et les colonnes de la deuxième matrice: 3 2 Saisissez les éléments: Saisissez a11: 2 Saisissez a12: -3 Saisissez a13: 4 Saisissez a21: 53 Saisissez a22: 3 Saisissez a23: 5 Entrez les éléments: Entrez a11: 3 Entrez a12: 3 Entrez a21: 5 Entrez a22: 0 Entrez a31: -3 Entrez a32: 4 Matrice de sortie: -21 22159179

Articles intéressants...