C Programm zum Multiplizieren von zwei Matrizen mit mehrdimensionalen Arrays

In diesem Beispiel lernen Sie, zwei Matrizen zu multiplizieren und mit benutzerdefinierten Funktionen anzuzeigen.

Um dieses Beispiel zu verstehen, sollten Sie die folgenden C-Programmierthemen kennen:

  • C Arrays
  • C Mehrdimensionale Arrays

Dieses Programm fordert den Benutzer auf, die Größe (Zeilen und Spalten) von zwei Matrizen einzugeben.

Um zwei Matrizen zu multiplizieren, sollte die Anzahl der Spalten der ersten Matrix gleich der Anzahl der Zeilen der zweiten Matrix sein .

Das folgende Programm fragt nach der Anzahl der Zeilen und Spalten von zwei Matrizen, bis die obige Bedingung erfüllt ist.

Anschließend wird die Multiplikation zweier Matrizen durchgeführt und das Ergebnis auf dem Bildschirm angezeigt.

Zu diesem Zweck haben wir drei Funktionen erstellt:

  • getMatrixElements() - um vom Benutzer eingegebene Matrixelemente zu übernehmen.
  • multiplyMatrices() - zwei Matrizen zu multiplizieren.
  • display() - um die resultierende Matrix nach der Multiplikation anzuzeigen.

Multiplizieren Sie Matrizen, indem Sie sie an eine Funktion übergeben

 #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; )

Ausgabe

 Geben Sie Zeilen und Spalten für die erste Matrix ein: 2 3 Geben Sie Zeilen und Spalten für die zweite Matrix ein: 3 2 Geben Sie Elemente ein: Geben Sie a11: 2 ein. Geben Sie a12: -3 ein. Geben Sie a13: 4 ein. Geben Sie a21: 53 ein. Geben Sie a22: 3 ein. Geben Sie a23: 5 ein Elemente eingeben: Eingabe a11: 3 Eingabe a12: 3 Eingabe a21: 5 Eingabe a22: 0 Eingabe a31: -3 Eingabe a32: 4 Ausgabematrix: -21 22 159 179

Interessante Beiträge...