#include using std::cout; using std::endl; #include using std::exit; #include "isim.h" class SymmetricMatrix { public: //constructor SymmetricMatrix::SymmetricMatrix(const int matrixSize) { size = matrixSize; for(int i=0; i < size; i++) { matrix[i] = new int[i+1]; for(int j=0; j < i+1; j++) matrix[i][j]=0; } } //constructor ended //start of add methods void SymmetricMatrix::add (const int value) { for(int i=0; i < size;i++) { for(int j=0; j< i+1;j++) matrix[i][j] += value; } } void SymmetricMatrix::add (const SymmetricMatrix& matrix1) { for(int i=0; i < size; i++) { for(int j=0; j< i+1;j++) matrix[i][j] += matrix1[i][j]; } } void SymmetricMatrix::add (const SymmetricMatrix& matrix1, const SymmetricMatrix& matrix2) { if (matrix1.getSize() != matrix.getSize() && matrix1.getSize() != matrix.getSize()) { cout<<"matrix sizes are not same"; exit(1); } else { for(int i=0; i < matrix1.getSize(); i++) for(int j=0; j< i+1;j++) matrix[i][j] = matrix1[i][j] + matrix2[i][j]; } } /// end of add methods //start of multiply void SymmetricMatrix::multiply(const SymmetricMatrix& matrix1) { if (matrix1.getSize() != matrix.getSize() { cout<<"matrix sizes are not same"; exit(1); } else { for(int i=0; i < size;i++) { for(int j=0; j< i+1;j++) matrix[i][j] *= matrix1[i][j]; } } } void SymmetricMatrix::multiply(const int value) { for(int i=0; i < size;i++) { for(int j=0; j< i+1;j++) matrix[i][j] += value; } } void SymmetricMatrix::multiply(const SymmetricMatrix& matrix1, const SymmetricMatrix& matrix2) { if (matrix1.getSize() != matrix2.getSize() && matrix1.getSize() != matrix.getSize()) { cout<<"matrix sizes are not same"; exit(1); } else { for(int i=0; i < size;i++) { for(int j=0; j< i+1;j++) matrix[i][j] = matrix1[i][j] * matrix2[i][j]; } } } //end of multiply methods //start of subtract methods void SymmetricMatrix::subtract(const int value) { value = value * (-1); add(value); } void SymmetricMatrix::subtract(const SymmetricMatrix& matrix1) { matrix1.multiply(-1); add(matrix1); } void SymmetricMatrix::subtract(const SymmetricMatrix& matrix1, const SymmetricMatrix& matrix2) { matrix2.multiply(-1); add(matrix1,matrix2); } //end of subtract methods //frees the memory void SymmetricMatrix::free() { for (int i=0; i < size; i++) delete[] matrix[i]; } //returns size int SymmetricMatrix::getSize() const { return size; } //returns the value in row and column int SymmetricMatrix::getValue(const int row, const int column) const { return matrix[row][column]; } void SymmetricMatrix::setValue(const int row, const int column, const int newValue) { matrix[row][column] = newValue; } //prints the matrix on the console void SymmetricMatrix::print() { for(int i=0; i < size; i++) { for(int j=0; j < i+1; j++) { cout<