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

Αυτό το πρόγραμμα λαμβάνει δύο πίνακες παραγγελίας r1 * c1 και r2 * c2 αντίστοιχα. Στη συνέχεια, το πρόγραμμα πολλαπλασιάζει αυτούς τους δύο πίνακες (αν είναι δυνατόν) και το εμφανίζει στην οθόνη.

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

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

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

Παράδειγμα: Πολλαπλασιάστε δύο πίνακες χωρίς να χρησιμοποιήσετε συναρτήσεις

 #include using namespace std; int main() ( int a(10)(10), b(10)(10), mult(10)(10), r1, c1, r2, c2, i, j, k; cout <> r1>> c1; cout <> r2>> c2; // If column of first matrix in not equal to row of second matrix, // ask the user to enter the size of matrix again. while (c1!=r2) ( cout << "Error! column of first matrix not equal to row of second."; cout <> r1>> c1; cout <> r2>> c2; ) // Storing elements of first matrix. cout << endl << "Enter elements of matrix 1:" << endl; for(i = 0; i < r1; ++i) for(j = 0; j < c1; ++j) ( cout << "Enter element a" << i + 1 << j + 1 <> a(i)(j); ) // Storing elements of second matrix. cout << endl << "Enter elements of matrix 2:" << endl; for(i = 0; i < r2; ++i) for(j = 0; j < c2; ++j) ( cout << "Enter element b" << i + 1 << j + 1 <> b(i)(j); ) // Initializing elements of matrix mult to 0. for(i = 0; i < r1; ++i) for(j = 0; j < c2; ++j) ( mult(i)(j)=0; ) // Multiplying matrix a and b and storing in array mult. for(i = 0; i < r1; ++i) for(j = 0; j < c2; ++j) for(k = 0; k < c1; ++k) ( mult(i)(j) += a(i)(k) * b(k)(j); ) // Displaying the multiplication of two matrix. cout << endl << "Output Matrix: " << endl; for(i = 0; i < r1; ++i) for(j = 0; j < c2; ++j) ( cout << " " << mult(i)(j); if(j == c2-1) cout << endl; ) return 0; ) 

Παραγωγή

Εισαγάγετε σειρές και στήλες για τον πρώτο πίνακα: 3 2 Εισαγάγετε σειρές και στήλη για τον δεύτερο πίνακα: 3 2 Σφάλμα! στήλη του πρώτου πίνακα που δεν ισούται με τη σειρά του δευτέρου. Εισαγάγετε σειρές και στήλες για τον πρώτο πίνακα: 2 3 Εισαγάγετε σειρές και στήλη για τον δεύτερο πίνακα: 3 2 Εισαγάγετε στοιχεία της μήτρας 1: Εισαγάγετε στοιχεία a11: 3 Εισαγάγετε στοιχεία a12: -2 Εισαγάγετε στοιχεία a13: 5 Εισαγάγετε στοιχεία a21: 3 Εισαγάγετε στοιχεία a22 : 0 Εισαγάγετε στοιχεία a23: 4 Εισαγάγετε στοιχεία μήτρας 2: Εισαγάγετε στοιχεία b11: 2 Εισαγάγετε στοιχεία b12: 3 Εισαγάγετε στοιχεία b21: -9 Εισαγάγετε στοιχεία b22: 0 Εισαγάγετε στοιχεία b31: 0 Εισαγάγετε στοιχεία b32: 4 Matrix εξόδου: 24 29 6 25

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

Η στήλη του πρώτου πίνακα πρέπει να είναι ίση με τη σειρά του δεύτερου πίνακα για πολλαπλασιασμό. Εάν αυτή η συνθήκη δεν ικανοποιείται τότε, το μέγεθος της μήτρας ρωτάται πάλι χρησιμοποιώντας while loop.

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

Δεδομένου ότι το πρόγραμμα είναι μακρύ και δύσκολο να εντοπιστεί, είναι καλύτερο να επιλύσετε αυτό το πρόγραμμα μεταβιβάζοντάς το σε μια λειτουργία.

Επισκεφτείτε αυτήν τη σελίδα για να μάθετε σχετικά με τον πολλαπλασιασμό των πινάκων μεταβιβάζοντας πίνακες σε μια συνάρτηση.

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