Я пытаюсь создать программу, которая создает матрицу с использованием векторов векторов целых чисел, а затем умножает ее на другую матрицу. Я знаю, как умножать матрицы на бумаге, но когда я пытаюсь реализовать ее в своей программе, я не заставляю ее работать. Я знаю, что обе матрицы введены правильно и передаются правильно, так как у меня есть выход этих функций, чтобы я мог отлаживать. Программа работает некорректно, когда я пытаюсь их умножить. Ответ и количество элементов неверны. Я знаю, что я что-то упускаю, но не могу понять, что.Умножение матриц с использованием 2d векторов в C++
Matrix Matrix::operator*(Matrix m){
vector<int> mRow = m.getRow(0);
vector<int> mCol = m.getCol(0);
vector<int> newElem;
int product = 0;
//adds the contents of the 2nd matrix to the 2d vector
vector< vector<int> > m2(mRow.size(), vector<int>(mCol.size()));
for (int i = 0; i < mRow.size(); i++){
mRow.clear();
mRow = m.getRow(i);
for (int j = 0; j < mCol.size(); j++){
m2[j][i] = mRow[j];
}
}
//Multiplies the matrices using the 2d matrix**THIS IS WHERE IT GOES WRONG**
for (int i = 0; i < row; i++){
for (int j = 0; j < column; j++){
product += matrix[i][j]*m2[j][i];
}
newElem.insert(newElem.begin()+i,product);
product = 0;
}
//displays the products so that i can see if its working
for (int i = 0; i < newElem.size(); i++){
cout << " "<<newElem[i]<<endl;
}
//adds the new product vector to a new Matrix object and returns it
Matrix newM(row, mCol.size());
vector<int> temp;
for (int i = 0; i < row; i++){
for (int j = 0; j < mCol.size(); j++){
temp.insert(temp.begin()+j, newElem[0]);
newElem.erase(newElem.begin());
}
newM.setRow(temp,i);
temp.clear();
}
return newM;
}
Хотя я не знаю, помогает ли это, я использую this сайт в качестве эталона для умножения матриц 2 вместе.
Не следует ли сбросить «продукт» во внешнюю петлю умножения? – Keugyeol
ya i should, thats исправлено, но я до сих пор не получаю полных результатов. Поэтому, если у меня есть 3x3 * 3x3, я должен получить 9 элементов; я только получаю 3. – a22asin