Создал класс матрица и класс вектор. Как реализовать функцию умножения друг на друга их?
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;
}
}
};
Такое действие возможно, если имеется некоторая матрица 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;
}
} }
А дальше уж реализуйте аналогичное решение для своих классов.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть папка, в папке некоторое кол-во папок, в которых находятся изображениязадача заключается в том чтобы, указав начальную папку, получить...
При select в QSqlTableModel не вызывается сигнал rowsInsertedИ вызывается только тогда когда добавляется строка через insertRow
Как заставить QLabel выделять url в (не статичном) тексте и открывать их в браузере? Вот код для примера: