C#矩阵类 Matrix.cs
想当初真的是绞尽脑汁写的代码,这是我算法与数据结构的作业
public class Matrix
{
private int[] items;
private int rows, cols;
public Matrix(int nRows, int nCols)
{
rows = nRows; cols = nCols;
items = new int[rows * cols];
}
public Matrix(int nSize) : this(nSize, nSize) { }
public Matrix() : this(1) { }
public Matrix(int nRows, int nCols, int[] mat)
{
rows = nRows; cols = nCols;
items = new int[rows * cols];
Array.Copy(mat, items, mat.Length);
}
public Matrix(Matrix omat)//复制
{
rows = omat.Rows; cols = omat.Columns;
int size = rows * cols;
items = new int[size];
Array.Copy(omat.items, this.items, size);
}
public int Rows
{
get { return rows; }
}
public int Columns
{
get { return cols; }
}
//获得或设置第i行第j列的元素
public int this[int i, int j]
{
get { return items[i * cols + j]; }
set { items[i * cols + j] = value; }
}
//两个矩阵相加
public void Add(Matrix b)
{
for (int i = 0; i < Rows; i++)
for (int j = 0; j < Columns; j++)
items[i * cols + j] += b[i, j];
}
// '+'运算符重载
public static Matrix operator +(Matrix a, Matrix b)
{
Matrix c = new Matrix(a.Rows, a.Columns);
for (int i = 0; i < a.Rows; i++)
for (int j = 0; j < a.Columns; j++)
c[i, j] = a[i, j] + b[i, j];
return c;
}
//转置
public void Transpose()
{
Matrix trans = new Matrix(Columns, Rows);
int t = 0;
for (int i = 0; i < Rows; i++)
{
for (int j = i + 1; j < Columns; j++)
{
t = this[i, j];
this[i, j] = this[j, i];
this[j, i] = t;
}
}
}
//遍历,输出各元素值
public void Show()
{
int i, j;
for (i = 0; i < Rows; i++)
{
for (j = 0; j < Columns; j++)
Console.Write(" " + items[i * Columns + j]);
Console.WriteLine();
}
Console.WriteLine();
}
}
不要忘了点赞哦,谢谢!!!