Помогите найти произведение двух матриц

Подскажите пожалуйста в чем проблема.
Мне нужно найти произведение двух матриц, но у меня во всех значениях «мусор» выводит.

...

int **prMatr;
prMatr = new int*[n];
i = 0;
while (i < n)
{
    prMatr[i] = new int[k];
    i++;
}
int ni, nj;//индексы новой матрицы
int sum;
ni = 0; nj = 0; sum = 0;
while (i < n)
{
    nj = 0;
    while (nj<k)
    {
        j = 0; sum = 0;
        while (j < k)
        {
            sum = sum + matr1[i][j] * matr2[j][i];
            j++;
        }
        prMatr[i][nj] = sum;
        nj++;
    }
    i++;
}

...

Я бы использовал два цикла, с двойной проверкой, строки одной матрицы, и столбца другой матрицы. Меньше путаницы. И где ты используешь размерность матрицы «m», есть «k» и «n» а «m»

Если тупо кодить то, что написано в формуле произведения матриц, то получится примерно так:


const int m = ..., n = ..., k = ...;

int matr1[n][m];
int matr2[m][k];
int matr3[n][k];
int sum;

for (int i = 0; i < n; i++)
{
    for (int j = 0; j < k; j++)
    {
        sum = 0;
        for (int r = 0; r < m; r++)
        {
            sum += matr1[i][r] * matr2[r][j];
        }
        matr3[i][j] = sum;
    }
}

А в твой код, извини, я даже вникать не стал. Слишком запутанно. И зачем было использовать while там, где явно нужен for?

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.