我想表达2by2矩阵的乘积

问题描述 投票:3回答:1

我想输出将2乘以2矩阵的结果。我试图对矩阵元素进行硬编码,但我不擅长使用循环显示它们。我已经尝试了几次。

#include <iostream>

using namespace std;

int main()
{
    int m1[2][2]
    {
        {1, 2},
        {3, 4},
    };

    int m2[2][2]
    {
        {5, 6},     
        {7, 8},     
    };

    int m3[2][2] = {0};
    // int m3[2][2] = {{1,2},{3,4}};

    // m3[0][0] = m1[0][0] * m2[0][0] + m1[0][1] * m2[1][0];
    // m3[0][1] = m1[0][0] * m2[0][1] + m1[0][1] * m2[1][1];

    // m3[1][0] = m1[1][0] * m2[0][0] + m1[1][1] * m2[1][0];
    // m3[1][1] = m1[1][0] * m2[0][1] + m1[1][1] * m2[1][1];

    int multiplyTemp1;
    int multiplyTemp2;
    for (int row = 0; row < 2; ++row)
    {
        for (int col = 0; col < 2; ++col)
        {
            // m3[row][row] += m1[row][col] * m2[col][row];
            m3[row][col] += m3[row][col] * m3[col][row];
            // if (row == 0 || row == 1)
            // {
            //     multiplyTemp1 += m1[row][col] * m2[col][row];
            // }
        }
        cout << endl;
    }
    // cout << multiplyTemp1 << " ";
    // cout << endl;

    /*
        m3 = [00, 01]
             [10, 11]
    *
    */
    for (int row = 0; row < 2; ++row)
    {
        for (int col = 0; col < 2; ++col)
        {
            cout << m3[row][col] << '\t';
        }
        cout << endl;
    }
    // for (int i = 0; i < 2; ++i)
    // {
    //     for (int j = 0; j < 2; ++j)
    //     {
    //         // {1, 2}   {5, 6}
    //         // {3, 4}   {7, 8}
    //         m3[i][j] = m1[i][j] * m2[j][i] + m1[i][j + 1] * m2[j + 1][i];
    //         cout << m3[i][j] << "\t";
    //     }
    //     cout << endl;
    // }



    return 0;
}

====

我想这样打印到控制台:image我附加了图片

这样,仅显示对角线分量。如何循环显示?无法使用double for循环显示它?19 00 50

谢谢。

c++ matrix
1个回答
3
投票

您的逻辑难以确定,并且两个矩阵有点错误。您必须使用第三个循环才能获得正确的结果,例如:

 m3[row][col] = 0; 
    for (int k = 0; k < 2; k++) 
        m3[row][col] += m1[row][k] *  
                     m2[k][col]; 

以下为完整的工作代码。

#include <iostream>

using namespace std;

int main()
{
int m1[2][2]
{
    {1, 2},
    {3, 4},
};

int m2[2][2]
{
    {5, 6},     
    {7, 8},     
};

int m3[2][2] = {0};

int multiplyTemp1;
int multiplyTemp2;
for (int row = 0; row < 2; ++row)
{
    for (int col = 0; col < 2; ++col)
    {
        m3[row][col] = 0; 
        for (int k = 0; k < 2; k++) 
            m3[row][col] += m1[row][k] *  
                         m2[k][col]; 
    }
    cout << endl;
}
for (int row = 0; row < 2; ++row)
{
    for (int col = 0; col < 2; ++col)
    {
        cout << m3[row][col] << '\t';
    }
    cout << endl;
}
 }
© www.soinside.com 2019 - 2024. All rights reserved.