-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 マトリックスの詳細を見つけようとしたとき:

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

これはまだ 2 次元配列 ( int[,]) であり、3 次元配列( ) ではありません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 に答える
2

2 番目の例では、3x3 の 2D 配列ではなく、3D 配列を宣言しています。宣言から余分な「,」を削除します。

于 2013-02-16T13:25:40.453 に答える
1

3 次元配列があり、2 次元配列のように使用しているためですx[0,0]

于 2013-02-16T13:25:38.983 に答える
1

あなたが宣言したものは、まだ2次元配列です。2D 配列の場合、次のように使用できます。

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 Arraysは、MSDNを参照してください。

IEnumerablearrays はandを実装しているため、C# ではすべての配列に対して反復をIEnumerable<T>使用できます。foreachあなたの場合、次のように使用できます。

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 に答える