#include #include #include #include void multiply_matrices(const std::vector>& matrix1, const std::vector>& matrix2, std::vector>& result) { int rows1 = matrix1.size(); int cols1 = matrix1[0].size(); int cols2 = matrix2[0].size(); for (int i = 0; i < rows1; ++i) { for (int j = 0; j < cols2; ++j) { double sum = 0.0; for (int k = 0; k < cols1; ++k) { sum += matrix1[i][k] * matrix2[k][j]; } result[i][j] = sum; } } } int main() { int n = 4; int size = 3; std::random_device rd; std::mt19937 gen(rd()); std::uniform_real_distribution<> dis(0.0, 1.0); std::vector>> matrices(n, std::vector>(size, std::vector(size))); std::vector>> results(n, std::vector>(size, std::vector(size))); for (int i = 0; i < n; ++i) { for (int j = 0; j < size; ++j) { for (int k = 0; k < size; ++k) { matrices[i][j][k] = dis(gen); } } } #pragma omp parallel for num_threads(n) for (int i = 0; i < n; ++i) { multiply_matrices(matrices[i], matrices[i], results[i]); } for (int i = 0; i < n; ++i) { std::cout << "Wynik mnożenia macierzy " << i + 1 << ":" << std::endl; for (int j = 0; j < size; ++j) { for (int k = 0; k < size; ++k) { std::cout << results[i][j][k] << " "; } std::cout << std::endl; } std::cout << std::endl; } return 0; }