-1

我可以使用以下代码找到矩阵 2x2 的 det:

using System;

class find_det
{
static void Main()
{
    int[,] x = { { 3, 5, }, { 5, 6 }, { 7, 8 } };
    int det_of_x = x[0, 0] * x[1, 0] * x[0, 1] * x[1, 1];
    Console.WriteLine(det_of_x);
    Console.ReadLine();
}
}

但是当我试图找到 3x3 矩阵的 det 时,使用以下代码:

using System;

class matrix3x3
{
    static void Main()
{
    int[,,] x={{3,4,5},{3,5,6},{5,4,3}};
    int det_of_x=x[0,0]*x[0,1]*x[0,2]*x[1,0]*x[1,1]*x[1,2]*x[2,0]*x[2,1]*x[2,2];
    Console.WriteLine(det_of_x);
    Console.ReadLine();
    }
}

它出错了。为什么?

4

4 回答 4

2

您在第二个示例中声明了 3D 数组,而不是 3x3 2D 数组。从声明中删除多余的“,”。

于 2013-02-16T13:25:40.453 回答
2

它仍然是一个二维数组(int[,])而不是一个三维数组(int[,,])。

int[,] x = { { 3, 4, 5 }, { 3, 5, 6 }, { 5, 4, 3 } };

旁注:您可以对任何多维数组进行计算,如下所示:

int det_of_x = 1;
foreach (int n in x) det_of_x *= n;
于 2013-02-16T13:25:31.860 回答
1

您将其声明为仍然是二维数组。对于二维数组,您可以像这样使用它;

int[,] x = { { 3, 4, 5 }, { 3, 5, 6 }, { 5, 4, 3 } };
int det_of_x = x[0, 0] * x[0, 1] * x[0, 2] * x[1, 0] * x[1, 1] * x[1, 2] * x[2, 0] * x[2, 1] * x[2, 2];
Console.WriteLine(det_of_x);
Console.ReadLine();

如果你想使用 3 维数组,你应该像这样使用它int[, ,]

Multidimensional ArraysMSDN查看更多信息。

由于数组实现IEnumerableIEnumerable<T>,因此您可以foreach在 C# 中对所有数组使用迭代。在您的情况下,您可以像这样使用它;

int[, ,] x = new int[,,]{ {{ 3, 4, 5 }, { 3, 5, 6 }, { 5, 4, 3 }} };
int det_of_x = 1;
foreach (var i in x)
{
    det_of_x *= i;
}

Console.WriteLine(det_of_x); // Output will be 324000

这是一个DEMO.

于 2013-02-16T13:26:43.777 回答
1

因为您有一个 3 维数组,并且像使用 2 维数组一样使用它,例如x[0,0].

于 2013-02-16T13:25:38.983 回答