注册 登录
编程论坛 C++教室

求前辈帮助

a511637694 发布于 2012-11-20 10:32, 248 次点击
已知A是一个3*4的矩阵,B是一个4*5的矩阵,编程求A*B得到的新矩阵C并输出C
4 回复
#2
寒风中的细雨2012-11-20 10:44


预先 弄三个2维数组  自己量身定做  行列 相乘 之后 再 相加  对号入座  完事!
#3
rjsp2012-11-20 13:03
你得告诉别人你哪里不会,哪里需要别人帮助?

我先Google一下“矩阵的乘法”,找到 http://zh.矩陣乘法
程序代码:
#include <iostream>

template<size_t M, size_t N, size_t P, typename T>
void MatrixMultiplies( const T (&a)[M][N], const T (&b)[N][P], T (&c)[M][P] )
{
    for( size_t i=0; i!=M; ++i )
    {
        for( size_t j=0; j!=P; ++j )
        {
            c[i][j] = 0;
            for( size_t k=0; k!=N; ++k )
            {
                c[i][j] += a[i][k] * b[k][j];
            }
        }
    }
}

template<size_t R, size_t C, typename T>
void MatrixOutput( const T (&m)[R][C] )
{
    for( size_t r=0; r!=R; ++r )
    {
        for( size_t c=0; c!=C; ++c )
            std::cout << '\t' << m[r][c];
        std::cout << '\n';
    }
}

int main()
{
    int a[2][3] = {  1, 0, 2
                  , -1, 3, 1 };
    int b[3][2] = { 3, 1
                  , 2, 1
                  , 1, 0 };
    int c[2][2];
    MatrixMultiplies( a, b, c );

    MatrixOutput( a );
    std::cout << "*\n";
    MatrixOutput( b );
    std::cout << "=\n";
    MatrixOutput( c );
    std::cout << std::endl;

    return 0;
}

#4
mmmmmmmmmmmm2012-11-20 13:24
回复 3楼 rjsp
学习了
#5
lyj1232012-11-25 16:48
楼主的问题太广,首先要懂什么是矩阵乘法!百度一下!
1