Форум » C/C++ для начинающих (C/C++ for beginners) » Функция умножения матриц на C++. » Ответить

Функция умножения матриц на C++.

Сыроежка: Нередко в качестве задания для начинающих C++-программистов предлагается написать функцию умножения двух матриц. Ниже представлена программа, которая демонстрирует такую функцию. Используемый в программе перегруженный оператор operator <<, естественно не предназначен для вывода массивов любых чисел. В программе он используется для простоты демонстрации функции. Вам самим нужно будет обеспечивать вывод массивов на консоль в зависимости от типов и величин элементов массивов. Тем не менее приведенный в программе оператор operator << может быть взят за основу при написании вами вашего собственного перегруженного оператора. [pre2] #include <iostream> #include <iomanip> template <typename T, size_t N1, size_t N2, size_t N3> void multiply_matrices( const T ( &a1 )[N1][N2], const T ( &a2 )[N2][N3], T ( &a3 )[N1][N3] ) { for ( size_t i = 0; i < N1; i++ ) { for ( size_t j = 0; j < N3; j++ ) { a3[j] = 0; for ( size_t k = 0; k < N2; k++ ) { a3[j] += a1[k] * a2[k][j]; } } } } template <typename T, size_t N1, size_t N2> std::ostream & operator <<( std::ostream &os, const T ( &a )[N1][N2] ) { for ( const auto &row : a ) { for ( const auto &item : row ) { os << std::setw( 3 ) << item << ' '; } os << '\n'; } return os; } int main() { const size_t N1 = 2; const size_t N2 = 3; const size_t N3 = 4; int a1[N1][N2] = { { 3, 9, 7 }, { 1, 5, 4 } }; int a2[N2][N3] = { { 6, 2, 8, 1 }, { 3, 9, 4, 0 }, { 5, 3, 1, 3 } }; int a3[N1][N3]; std::cout << a1 << '\n'; std::cout << a2 << '\n'; multiply_matrices( a1, a2, a3 ); std::cout << a3 << '\n'; return 0; }[/pre2] Вывод программы на консоль: [pre2] 3 9 7 1 5 4 6 2 8 1 3 9 4 0 5 3 1 3 80 108 67 24 41 59 32 13 [/pre2]

Ответов - 0



полная версия страницы