в: void matmult(const int a[][

Автор admin Суббота, 13 июня 2009 11:32

в: void matmult(const int a[][MAXC0LS]. size_t m. size_t n. const int b[][MAXC0LS]. size_t p. size_t q. int result[][MAXCOLS): Функция умножает матрицу а с размерами mxn на матрицу b с размерами pxq; предполагается, что пир равны. Как видите, без применения объекта valarray или его аналога приходится фиксировать максимальную вторую размерность в каждой матрице. Кроме того, такой подход затрудняет возвращение массива-результата по значению, поэтому вызывающая сторона обычно передает его в дополнительном аргументе. Объекты valarray не только позволяют передавать матрицы произвольного размера, но и упрощают обработку матриц любого типа и возврат результата по значению. Вот как это делается: //: C07:MatrixMultiply.cpp // Умножение матриц с использованием объектов valarray #include #i nclude #include linclude linclude linclude using namespace std; // Вывод объекта valarray в виде матрицы tempiate void printMatrix(const valarray& a. size_t n) { size_t siz = n*n; assert(siz <= a.sizeO): for(size_t i = 0; i < siz; ++i) { cout « setw(5) « a


Комментарии закрыты.