2017-12-24 6 views
-2

以下のように2D行列を作成しようとしています。 私は方法を見つけることができません、私を助けてください。2次元行列X [] []をX軸に、数字をY軸に作成

擬似コードは非常に役に立ちます。

ノーマルX [3] [5] 2次元マトリックス:

[00][01][02][03][04] 
[10][11][12][13][14] 
[20][21][22][23][24] 

私が作成したい何がX [C]である[5]

[A0][A1][A2][A3][A4] 
[B0][B1][B2][B3][B4] 
[C0][C1][C2][C3][C4] 
+1

どのような言語ですか?ほとんどはカスタムインデックス作成をサポートしていませんが、文字を受け入れるゲッターメソッドとセッターメソッドを持つ2D配列を内部的に持つクラスを作成できます。 –

+0

@ElanHamburger C# – siddharth

答えて

1

これはかなりの構文あなたではありません探していたが、あなたのニーズに合っていると思う。あなたが望む動作を取得するためには、2次元マトリックスを格納し、代わりにint

public class Matrix<T> { 
    private T[,] arr; 

    public Matrix(int x, int y) { 
     arr = new T[x, y]; 
    } 

    public T this[char c, int i] { 
     get { return arr[c - 'A', i]; } 
     set { arr[c - 'A', i] = value; } 
    } 
} 

charあなたが見ることができるように、コードがあるの受け入れを[]演算子をオーバーロードするクラスを作成する必要があります実際にはかなりシンプルです。 charデータ型にはその文字のASCII値が格納されているという利点があります。もし

Matrix<int> m = new Matrix<int>(3,4); // Creates a 3 x 4 matrix of ints 
m['B',3] = 4;       // m[1,3] = 4 

EDIT

: 'A' を離れて差し引くことにより、私たちは、あなたがそうのような文字を使用して、マトリックスを呼び出すことができるなど、1として 'B'、0として 'A' を使用することができますあなたは、あなたも、あなたが初期化するために使用する文字は、アレイの整数初期化子のように、entriのであることをchar

public Matrix(char x, int y) { 
    arr = new T[x - 'A' + 1, y]; 
} 

注意を受け入れるようにコンストラクタを修正することができると思いましたes、したがって最も高いインデックスよりも1つ大きい。

Matrix<int> m = new Matrix<int>('C',4); // Creates a 3 x 4 matrix of ints 
m['B',3] = 4;       // m[1,3] = 4 
関連する問題