Не правильно умножает матрицу 3x3

lulu13

Всем привет.Помогите плиз найти ошибку в ф-ции.
MATR MATR::operator * (const MATR &k)
{
    MATR Rez;
    
    std::cout << "Умножение матрицы" << std::endl;
    for(int i = 0; i < 3 ; i++)
        for(int j = 0 ; j < 3; j++)
            for (int m = 0 ; m < 3; m++)
                Rez.mas[i][j] += this->mas[i][m]*k.mas[m][j];
 
    return Rez;
}
7 ответов

lulu13

Я пока мало знаком с указателями и перегрузкой операторов, но вопрос. Почему стоит оператор += вместо = в этой строчке?
  Rez.mas[i][j] += this->mas[i][m]*k.mas[m][j];


lulu13

Между 7-й и 8-й строками добавь: Rez.mas[i][j]=0;


lulu13

Поставила,в строчке
Rez.mas[i][j] += this->mas[i][m]*k.mas[m][j];
пишет идентификатор i и j не определен.


lulu13

Что поставила и куда? Покажи целиком что получилось.


lulu13

MATR MATR::operator * (const MATR &k)
{
    MATR Rez;
    
    std::cout << "Умножение матрицы" << std::endl;
    for(int i = 0; i<3 ; i++)
        for(int j = 0 ; j < 3; j++)
            Rez.mas[i][j]=0; // сюда вставила
            for (int m = 0 ; m< 3; m++)
                Rez.mas[i][j] += this->mas[i][m]*k.mas[m][j]; // тут выбивает ошибку
 
    return Rez;
}


lulu13

Тут нужны фигурные скобки чтобы указать тело цикла.
for(int i = 0; i<3 ; i++) {
    for(int j = 0 ; j < 3; j++) {
        Rez.mas[i][j]=0;
        for (int m = 0 ; m< 3; m++)
            Rez.mas[i][j] += this->mas[i][m]*k.mas[m][j];
    }
}


lulu13

Спасибо большое,все работает очень благодарна