#include // --------------------------------------------- MatrixNxN: Dynamic size matrix class MatrixNxN { public: double *A; int N; /* ------------------------------------------ CreateMatrix(n): reserve space for matrix ------------------------------------------ */ void CreateMatrix(int n) { A = new double[n*n]; N = n; } MatrixNxN operator+(double x) { MatrixNxN out; int i, j; out.CreateMatrix(N); for (i = 0; i < N; i = i+1) for (j = 0; j < N; j = j+1) out.A[i*N+j] = A[i*N+j] + x; return(out); } }; ostream & operator<<( ostream & output, MatrixNxN & x ) { int i, j; for (i = 0; i < x.N; i = i + 1) { for (j = 0; j < x.N; j = j + 1) output << x.A[i*x.N+j] << "\t"; output << endl; } return(output); } // ----------------------------------------------------------------------- int main(int argc, char *argv[]) { MatrixNxN m1, m2; int i, j, k, N; N = 4; m1.CreateMatrix(N); k = 1; for (i = 0; i < N; i = i + 1) for (j = 0; j < N; j = j + 1) { m1.A[i*N+j] = k; k = k + 1; } cout << m1 << endl; m2 = m1 + 100; // cout << m2; }