public Matrix(int[,] data)
m_data = new int[data.GetLength(0), data.GetLength(1)];
for (int r = 0; r < data.GetLength(0); r++)
for (int c = 0; c < data.GetLength(1); c++)
m_data[r, c] = data[r, c];
public Matrix(int a, int b, int c, int d)
public static Matrix operator *(int n, Matrix A)
public static Matrix operator +(Matrix A, Matrix B)
public Matrix add(Matrix other)
return new Matrix(m_data[0, 0] + other.m_data[0, 0], m_data[0, 1] + other.m_data[0, 1], m_data[1, 0] + other.m_data[1, 0], m_data[1, 1] + other.m_data[1, 1]);
public Matrix scalarMult(int n)
return new Matrix(n * m_data[0, 0], n * m_data[0, 1], n * m_data[1, 0], n * m_data[1, 1]);
public override String ToString()
for (int r = 0; r < m_data.GetLength(0); r++)
for (int c = 0; c < m_data.GetLength(1); c++)
if (c != m_data.GetLength(1) - 1)
public static void Main()
Matrix A = new Matrix(new int[,] {{4, 2, 2}, {6, 3, 2}, {3, 6, 3}});
Matrix B = new Matrix(new int[,] {{1, 0, 3}, {4, 7, 3}, {5, 5, 1}});
Console.WriteLine(A.scalarMult(2));