C++ 我想表示2by2矩阵的乘积

C++ 我想表示2by2矩阵的乘积,c++,matrix,C++,Matrix,我想输出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}, };

我想输出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;
}
#包括
使用名称空间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];
整数倍字节1;
整数倍字节2;
对于(int行=0;行<2;++行)
{
用于(整数列=0;列<2;++列)
{
//m3[行][行]+=m1[行][列]*m2[列][行];
m3[行][col]+=m3[行][col]*m3[列][row];
//如果(行==0 | |行==1)
// {
//倍数mp1+=m1[行][col]*m2[列][row];
// }
}

cout您的multiply and two matrix逻辑有点错误。您必须使用第三个循环才能得到正确的结果,如下所示:

 m3[row][col] = 0; 
    for (int k = 0; k < 2; k++) 
        m3[row][col] += m1[row][k] *  
                     m2[k][col]; 
m3[行][col]=0;
对于(int k=0;k<2;k++)
m3[行][col]+=m1[行][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;
}
 }
#包括
使用名称空间std;
int main()
{
int m1[2][2]
{
{1, 2},
{3, 4},
};
int m2[2][2]
{
{5, 6},     
{7, 8},     
};
int m3[2][2]={0};
整数倍字节1;
整数倍字节2;
对于(int行=0;行<2;++行)
{
用于(整数列=0;列<2;++列)
{
m3[行][col]=0;
对于(int k=0;k<2;k++)
m3[行][col]+=m1[行][k]*
m2[k][col];
}
库特