#include #include #include #include "2da.h" twodArray::twodArray(int rs, int cs) { rows = rs; columns = cs; data = new int[rs * cs]; } int twodArray::getRows() { return rows; } int twodArray::getColumns() { return columns; } int twodArray::get(int r, int c) { assert(r >= 0); assert(r < rows); assert(c >= 0); assert(c < columns); return data[r*columns + c]; } void twodArray::set(int r, int c, int value) { assert(r >= 0); assert(r < rows); assert(c >= 0); assert(c < columns); data[r*columns + c] = value; } void twodArray::setrow(int r, int * values) { for (int i = 0; i < columns; i += 1) set(r, i, values[i]); } void twodArray::print() { for (int r = 0; r < rows; r += 1) { for (int c = 0; c < columns; c += 1) cout << setw(6) << data[r*columns+c]; cout << "\n"; } cout << "\n"; } twodArray add(twodArray A, twodArray B) { int rows = A.getRows(), cols = A.getColumns(); assert(rows == B.getRows()); assert(cols == B.getColumns()); twodArray R(rows, cols); for (int r = 0; r < rows; r += 1) for (int c = 0; c < cols; c += 1) R.set(r, c, A.get(r, c) + B.get(r, c)); return R; } twodArray mul(twodArray A, twodArray B) { int arows = A.getRows(), acols = A.getColumns(); int brows = B.getRows(), bcols = B.getColumns(); assert(acols == brows); twodArray R(arows, bcols); for (int r = 0; r < arows; r += 1) for (int c = 0; c < bcols; c += 1) { int sum = 0; for (int i = 0; i < acols; i += 1) sum += A.get(r, i) * B.get(i, c); R.set(r, c, sum); } return R; }