Умножение матрицы на вектор. C++ [требует правки]

385
27 декабря 2017, 21:04

Создал класс матрица и класс вектор. Как реализовать функцию умножения друг на друга их?

class Matrix
    {
    public:
        int **arr;
        int rows;
        int columns;
    public:
        Matrix() {};
        Matrix(int rows, int columns)
        {
            this->rows = rows;
            this->columns = columns;
            arr = new int*[rows];
            for (int i = 0; i < rows; i++)
            {
                arr[i] = new int[columns];
            }
            for (int i = 0; i < rows; i++)
            {
                for (int j = 0; j < columns; j++)
                {
                    arr[i][j] = 0;
                }
            }
        }
    };
class Vector 
    {
    private:
        int *vec;
        int size;
    public:
        friend Matrix;
        Vector(int size)
        {
            this->size = size;
            vec = new int[size];
            for (int i = 0; i < size; i++)
            {
                vec[i] = 0;
            }
        }
};
Answer 1

Такое действие возможно, если имеется некоторая матрица matrix[m,n] и некоторый вектор vektor[n], количество элементов которого равно количеству строк матрицы. В результате получаем вектор new_vektor[n], первый элемент которого есть сумма произведений элементов первой строки массива matrix[m,n] на элементы массива vektor[n], второй элемент- сумма произведений элементов второй строки массива matrix[m,n] на элементы массива vektor[n] и т.д.

Не зная, какие у вас классы для матрицы и вектора, могу лишь предложить решение для массивов:

void MatrMultiply(int n, int m, float *matrix, float *vektor, float *res) // если необходимы целочисленные значения, можно заменить на int
{
  for (int i=0;i<n;i++)
  {
    float temp = 0;
    for (int j=0;j<m;j++)
    {
      temp += matrix[i*m+j]*vektor[j];
    }
    res[i] = temp;
  }
} }

А дальше уж реализуйте аналогичное решение для своих классов.

READ ALSO
Qt перебор содержимого папок

Qt перебор содержимого папок

Есть папка, в папке некоторое кол-во папок, в которых находятся изображениязадача заключается в том чтобы, указав начальную папку, получить...

297
QSqlTableModel не вызывается rowsInserted

QSqlTableModel не вызывается rowsInserted

При select в QSqlTableModel не вызывается сигнал rowsInsertedИ вызывается только тогда когда добавляется строка через insertRow

195
QLabel и текст с url

QLabel и текст с url

Как заставить QLabel выделять url в (не статичном) тексте и открывать их в браузере? Вот код для примера:

223