Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ คูณเมทริกซ์สองตัวโดยส่งผ่านฟังก์ชัน


เมทริกซ์คืออาร์เรย์สองมิติจัดเรียงเป็นแถวและคอลัมน์ ตัวอย่างเมทริกซ์ 3×4 มี 3 แถว 4 คอลัมน์:

8 6 3 5
7 1 9 2
5 1 9 8

ตัวอย่างโค้ด

#include <iostream>
using namespace std;

void MatrixMultiplication(int a[2][3], int b[3][3]) {
    int product[10][10], r1=2, c1=3, r2=3, c2=3, i, j, k;
    if (c1 != r2) {
        cout << "Column of first matrix should be equal to row of second matrix";
    } else {
        cout << "The first matrix is:" << endl;
        for(i=0; i<r1; ++i) {
            for(j=0; j<c1; ++j)
                cout << a[i][j] << " ";
            cout << endl;
        }
        cout << endl;
        cout << "The second matrix is:" << endl;
        for(i=0; i<r2; ++i) {
            for(j=0; j<c2; ++j)
                cout << b[i][j] << " ";
            cout << endl;
        }
        cout << endl;
        for(i=0; i<r1; ++i)
            for(j=0; j<c2; ++j)
                product[i][j] = 0;
        for(i=0; i<r1; ++i)
            for(j=0; j<c2; ++j)
                for(k=0; k<c1; ++k)
                    product[i][j] += a[i][k] * b[k][j];
        cout << "Product of the two matrices is:" << endl;
        for(i=0; i<r1; ++i) {
            for(j=0; j<c2; ++j)
                cout << product[i][j] << " ";
            cout << endl;
        }
    }
}

int main() {
    int a[2][3] = { {2, 4, 1}, {2, 3, 9} };
    int b[3][3] = { {1, 2, 3}, {3, 6, 1}, {2, 9, 7} };
    MatrixMultiplication(a, b);
    return 0;
}

ผลลัพธ์

The first matrix is:
2 4 1
2 3 9
The second matrix is:
1 2 3
3 6 1
2 9 7
Product of the two matrices is:
16 37 17
29 103 72

อธิบายโค้ดสำคัญ

กำหนดเมทริกซ์ a (2×3) และ b (3×3) ใน main() เรียก MatrixMultiplication(a,b)

int a[2][3] = { {2, 4, 1}, {2, 3, 9} };
int b[3][3] = { {1, 2, 3}, {3, 6, 1}, {2, 9, 7} };
MatrixMultiplication(a,b);

ในฟังก์ชัน ตรวจสอบเงื่อนไขคูณได้ (c1 == r2) ไม่ได้ให้แสดงข้อผิดพลาด

if (c1 != r2) {
    cout<<"Column of first matrix should be equal to row of second matrix";
}

แสดงเมทริกซ์ทั้งสองด้วย nested loop

cout<<"The first matrix is:"<<endl;
for(i=0; i<r1; ++i) {
    for(j=0; j<c1; ++j)
        cout<<a[i][j]<<" ";
    cout<<endl;
}
cout<<endl;
cout<<"The second matrix is:"<<endl;
for(i=0; i<r2; ++i) {
    for(j=0; j<c2; ++j)
        cout<<b[i][j]<<" ";
    cout<<endl;
}
cout<<endl;

กำหนด product[][] = 0 แล้วคูณเมทริกซ์ด้วย 3 nested loops:

for(i=0; i<r1; ++i)
    for(j=0; j<c2; ++j)
        product[i][j] = 0;
for(i=0; i<r1; ++i)
    for(j=0; j<c2; ++j)
        for(k=0; k<c1; ++k)
            product[i][j] += a[i][k] * b[k][j];

แสดงผลคูณ:

cout<<"Product of the two matrices is:"<<endl;
for(i=0; i<r1; ++i) {
    for(j=0; j<c2; ++j)
        cout<<product[i][j]<<" ";
    cout<<endl;
}