double[] arrA ;
double[] arrB;
/// <summary>
/// 计算矩阵相乘
/// </summary>
void run()
{
arrA = new double[n * n] { 1, 2, 3, 4 };
arrB = new double[n * n] { 5, 6, 7, 8 };
printArray(arrA);
printArray(arrB);
double[] arrResult = new double[n * n];
for (int iR = 1; iR <= n; iR++)
{
for (int iC = 1; iC <= n; iC++)
{
double value=0;
for (int i = 1; i <= n; i++)
{
value += getValue(iR, i, arrA) * getValue(i, iC, arrB);
}
setValue(iR,iC,value,arrResult);
}
}
Console.WriteLine("前者乘后者后:");
printArray(arrResult);
}
/// <summary>
/// 获取矩阵指定行列的值
/// </summary>
/// <param name="row">指定行</param>
/// <param name="col">指定行</param>
/// <param name="arr">由一维数组表示的数组</param>
/// <returns></returns>
double getValue(int row, int col,double[] arr)
{
int index = (row - 1) * n + col - 1;
return arr[index];
}
/// <summary>
/// 修改矩阵指定行列的值
/// </summary>
/// <param name="row">指定行</param>
/// <param name="col">指定行</param>
/// <param name="value">修改值</param>
/// <param name="arr">由一维数组表示的数组</param>
void setValue(int row,int col,double value,double[] arr)
{
int index = (row - 1) * n + col - 1;
arr[index] = value;
}
/// <summary>
/// 打印矩阵,方便查看显示
/// </summary>
/// <param name="arr"></param>
void printArray(double[] arr)
{
int num=Convert.ToInt32( Math.Sqrt(arr.Length));
Console.WriteLine("矩阵");
for (int i = 1; i <= num; i++)
{
Console.Write("行"+i+":");
for (int j = 1; j <= num; j++)
{
Console.Write(getValue(i, j, arr) + " ");
}
Console.Write((char)10);
}
}