1

我已经有一个错误检查器,以确保第一个矩阵的列 == 第二个矩阵的行,所以我知道它们可以相乘,但我不知道如何工作,以便可以将各种矩阵相乘尺寸,例如 [3x2] * [2x5]。这是我所拥有的:

Matrix Matrix::MultMatrices(Matrix A, bool& error){
if(error){
    cout <<"Unable to multiply these matrices";
    cout <<endl;
}

//Set dimensions for product matrix
int nRows=this->getRows();
int nCols=A.getCols();

Matrix prod(nRows, nCols);
int product;

//first two loops navigate prod Matrix for placement of answers
for(int i=0; i<nRows; i++){
    for(int j=0; j<nCols; j++){


        prod.setElement(i, j, product);
    }
}

return prod;
}

如果我有另外两个循环,我每次都可以通过循环找到 product 和setElement ......这行得通吗?

4

1 回答 1

0

首先,设置错误是您的责任:

int commonSize = getCols();
if( A.getRows() != commonSize ) {
    error = true;
    return *this;
}
error = false;

其次,那里缺少一个内部循环:

for(int i=0; i<nRows; i++){
    for(int j=0; j<nCols; j++){
        int product = 0;
        for(int k=0; k<commonSize; k++){
            product += getElement(i, k) * A.getElement(k, j);
        }
        prod.setElement(i, j, product);
    }
}
于 2013-09-19T00:13:10.953 回答