C/C++

Помогите решить лабораторную по программированию?

Даны целые положительные числа n и m, введённые с клавиатуры. Создать прямоугольный матрицы размерностей n x m и m x n, заполнить их случайными вещественными числами из промежутка [-10, 10] и написать функцию, с помощью которой можно найти произведение этих матриц?
Виталик .
Виталик .
1 743
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <random>
using namespace std;
unsigned input(const char* msg) {
cout << msg;
unsigned value;
cin >> value;
return value;
}
void multiply(int** a, int** b, int** c, size_t n, size_t m) {
for (auto i = 0U; i < n; ++i) {
for (auto j = 0U; j < n; ++j) {
c[i][j] = 0;
for (auto k = 0U; k < m; ++k) {
c[i][j] += a[i][k] * b[k][j];
}
}
}
}
int main() {
uniform_int_distribution<> uid(-10, 10);
mt19937 gen{ random_device()() };
auto rand = [&] { return uid(gen); };
auto show = [](int x) { cout << setw(4) << x; };
auto n = input("n: ");
auto m = input("m: ");
puts("");
auto a = new int* [n];
for (auto i = 0U; i < n; ++i) a[i] = new int[m];
for (auto i = 0U; i < n; ++i) generate(a[i], a[i] + m, rand);
for (auto i = 0U; i < n; ++i) {
for_each(a[i], a[i] + m, show);
puts("");
}
puts("");
auto b = new int* [m];
for (auto i = 0U; i < m; ++i) b[i] = new int[n];
for (auto i = 0U; i < m; ++i) generate(b[i], b[i] + n, rand);
for (auto i = 0U; i < m; ++i) {
for_each(b[i], b[i] + n, show);
puts("");
}
puts("");
auto c = new int* [n];
for (auto i = 0U; i < n; ++i) c[i] = new int[n];
multiply(a, b, c, n, m);
for (auto i = 0U; i < n; ++i) {
for_each(c[i], c[i] + n, show);
puts("");
}
for (auto i = 0U; i < n; ++i) delete[] a[i];
delete[] a;
for (auto i = 0U; i < m; ++i) delete[] b[i];
delete[] b;
for (auto i = 0U; i < n; ++i) delete[] c[i];
delete[] c;
system("pause > nul");
}
Шаманаев Вадим
Шаманаев Вадим
62 293
Лучший ответ
Виталик . топ просто!
Виталик . тут ещё твоя помощь нужна https://otvet.mail.ru/question/223220089
Виталик . это последняя!)
учи русский язык, если знак вопроса, то не "Помогите решить лабораторную по программированию", а "Поможете решить лабораторную по программированию" ? а в случае "Помогите решить лабораторную по программированию" - на конце или точука, или восклицательный знак.. ну еще многоточие...
Юрий Капранов
Юрий Капранов
51 493
Виталик . я тут вопрос не по русскому языку задал