--- trunk/gadget/matrix.cc 2015/04/29 12:55:30 2 +++ trunk/gadget/matrix.cc 2015/07/23 19:00:38 11 @@ -2,11 +2,11 @@ #include "mathfunc.h" #include "gadget.h" +//TODO doc //TODO usar mallock Matrix::Matrix(int nr, int nc, double value) { m = new double[nr * nc]; - nrow = nr; ncol = nc; int i, j; @@ -93,22 +93,39 @@ // } //} -//Matrix& Matrix::operator = (const Matrix& d) { -// int i; -// if (v != 0) { -// for (i = 0; i < nrow; i++) -// delete v[i]; -// delete[] v; -// } +//Matrix &Matrix::operator = (const Matrix& d) { +// int i,j; +//// if (v != 0) { +//// for (i = 0; i < nrow; i++) +//// delete v[i]; +//// delete[] v; +//// } +// if (m != 0) +// delete[] m; // // nrow = d.nrow; -// if (nrow > 0) { -// v = new double*[nrow]; -// for (i = 0; i < nrow; i++) -// v[i] = new double(*d[i]); +// ncol = d.ncol; // +// double* aux; +// if (nrow > 0) { +// m = d.m; +////// v = new double*[nrow]; +//// m = new double[nrow * ncol]; +////// for (i = 0; i < nrow; i++) +////// v[i] = new double(*d[i]); +//// cout << "0000000?????????:" << d[20] << endl; +//// for (i = 0; i < nrow; i++) { +//// for (j = 0; j < ncol; j++){ +////// cout << "j:" << j << endl; +//// cout << "????????????????????0" << endl; +//// aux = (double*) d[i*ncol+j]; +//// cout << "????????????????????1" << endl; +//// m[i*ncol+j] = 0; +////// cout << "????????????????????2" << endl; +//// } +//// } // } else -// v = 0; +// m = 0; // // return *this; //} @@ -123,6 +140,20 @@ } } +void Matrix::Initialize(int nr, int nc, double initial) { + if (m != 0) + delete[] m; + + m = new double[nr * nc]; + nrow = nr; + ncol = nc; + int i, j; + for (i = 0; i < nr; i++) { + for (j = 0; j < nc; j++) + m[i*ncol+j] = initial; + } +} + void Matrix::Print(ofstream& outfile) const { int i, j; for (i = 0; i < nrow; i++) { @@ -136,9 +167,7 @@ void Matrix::setToZero() { int i, j; -// **v = {0}; for (i = 0; i < nrow; i++) for (j = 0; j < ncol; j++) - m[i*ncol+j] = 0; -// (*v[i]).setToZero(); + m[i*ncol+j] = 0.0; }