我有一个错误检查器已经确定第一个矩阵的列==第二个矩阵的行,所以我知道它们可以相乘,但我无法弄清楚如何工作它以便我可以繁殖各种大小的矩阵,如[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;
}
如果我有另外两个循环,我每次都可以通过循环找到产品和 setElement ...会起作用吗?
答案 0 :(得分: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);
}
}