#include // --------------------------------------------- MatrixNxN: Dynamic size matrix class MatrixNxN { private: float *A; int N; public: /* ------------------------------------------ Constructor(int) ------------------------------------------ */ MatrixNxN(int n) { cout << "Uninitialized nxn float matrix, with n = " << n << endl << endl; A = new float[n*n]; N = n; } /* ------------------------- Constructor(int, float[]) ------------------------- */ MatrixNxN(int n, float B[]) { int i; cout << "** Initialized nxn float matrix, with n = " << n << endl << endl; A = new float[n*n]; N = n; for (i = 0; i < N*N; i = i + 1) A[i] = B[i]; } /* ------------------------ Print(): print matrix ------------------------ */ void Print() { int i, j; for (i = 0; i < N; i = i + 1) { for (j = 0; j < N; j = j + 1) cout << A[i*N+j] << "\t"; cout << "\n"; } cout << "\n"; }; }; // ----------------------------------------------------------------------- int main(int argc, char *argv[]) { int N = 4; MatrixNxN M(N); // Automatically invokes MatrixNxN(int) float B[16]; int i, j, k; k = 1; for (i = 0; i < N; i = i + 1) for (j = 0; j < N; j = j + 1) { B[i*N+j] = k; k = k + 1; } MatrixNxN Q(N, B); // Automatically invokes MatrixNxN(int, float[]) cout << "Matrix M:" << endl; M.Print(); cout << endl; cout << "Matrix Q:" << endl; Q.Print(); cout << endl; }