Πρόγραμμα C για πολλαπλασιασμό δύο πινάκων με χρήση πολυδιάστατων συστοιχιών

Σε αυτό το παράδειγμα, θα μάθετε να πολλαπλασιάζετε δύο πίνακες και να το εμφανίζετε χρησιμοποιώντας λειτουργίες που καθορίζονται από το χρήστη.

Για να κατανοήσετε αυτό το παράδειγμα, θα πρέπει να γνωρίζετε τις ακόλουθες θεματολογίες προγραμματισμού Γ:

  • C Πίνακες
  • Πολυδιάστατες συστοιχίες

Αυτό το πρόγραμμα ζητά από το χρήστη να εισαγάγει το μέγεθος (σειρές και στήλες) δύο πινάκων.

Για τον πολλαπλασιασμό δύο πινάκων, ο αριθμός των στηλών του πρώτου πίνακα πρέπει να είναι ίσος με τον αριθμό των σειρών του δεύτερου πίνακα .

Το παρακάτω πρόγραμμα ζητά τον αριθμό σειρών και στηλών δύο πινάκων έως ότου ικανοποιηθεί η παραπάνω συνθήκη.

Στη συνέχεια, πραγματοποιείται ο πολλαπλασιασμός δύο πινάκων και το αποτέλεσμα εμφανίζεται στην οθόνη.

Για να το κάνουμε αυτό, έχουμε δημιουργήσει τρεις λειτουργίες:

  • getMatrixElements() - για να λάβετε στοιχεία εισόδου Matrix από το χρήστη.
  • multiplyMatrices() - για πολλαπλασιασμό δύο πινάκων.
  • display() - για να εμφανιστεί η προκύπτουσα μήτρα μετά τον πολλαπλασιασμό.

Πολλαπλασιάστε τους πίνακες μεταβιβάζοντάς το σε μια συνάρτηση

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

Παραγωγή

 Εισαγάγετε σειρές και στήλη για τον πρώτο πίνακα: 2 3 Εισαγάγετε σειρές και στήλη για τη δεύτερη μήτρα: 3 2 Εισαγάγετε στοιχεία: Εισαγάγετε a11: 2 Enter a12: -3 Enter a13: 4 Enter a21: 53 Enter a22: 3 Enter a23: 5 Εισαγάγετε στοιχεία: Εισαγάγετε a11: 3 Enter a12: 3 Enter a21: 5 Enter a22: 0 Enter a31: -3 Enter a32: 4 Output Matrix: -21 22 159 179

ενδιαφέροντα άρθρα...