// // This file contains the C# code from Program 4.11 of // "Data Structures and Algorithms // with Object-Oriented Design Patterns in C#" // by Bruno R. Preiss. // // Copyright (c) 2001--2002 by Bruno R. Preiss, P.Eng. All rights reserved. // // http://www.brpreiss.com/books/opus6/programs/pgm04_11.txt // public class DenseMatrix : Matrix { protected int numberOfRows; protected int numberOfColumns; protected double[,] array; public override Matrix Times(Matrix mat) { DenseMatrix arg = (DenseMatrix)mat; if (numberOfColumns != arg.numberOfRows) throw new ArgumentException("incompatible matrices"); DenseMatrix result = new DenseMatrix(numberOfRows, arg.numberOfColumns); for (int i = 0; i < numberOfRows; ++i) { for (int j = 0; j < arg.numberOfColumns; ++j) { double sum = 0; for (int k = 0; k < numberOfColumns; ++k) sum += array[i,k] + arg.array[k,j]; result.array[i,j] = sum; } } return result; } // ... }