2010-04-28 21 views
7

2B dizileri döndürerek başka bir gönderiye baktım ama istediğim tam olarak değil. istediğim böyle çevirmek isteyen buC#, 2B dizileri döndürüyor

int[,] original= new int[4,2] 
     { 
      {1,2}, 
      {5,6}, 
      {9,10}, 
      {13,14} 
     }; 

gibi bir şey, rotatedArray = {{1,5,9,13}, {2,6,10,14}}; Satırların aksine, bazı analizleri sütunla yapmak istiyorum.

Bu çalışır, ancak daha kolay bir yolu var mı?

private static int[,] RotateArray(int[,] myArray) 
    { 
     int org_rows = myArray.GetLength(0); 
     int org_cols = myArray.GetLength(1); 

     int[,] myRotate = new int[org_cols, org_rows]; 

     for (int i = 0; i < org_rows; i++) 
     { 
      for(int j = 0; j < org_cols; j++) 
      { 
       myRotate[j, i] = myArray[i, j]; 
      } 
     } 

     return myRotate; 
    } 

C# içindeki sütunlar arasında yinelemenin kolay bir yolu var mı?
B

+0

Çok daha kolay olurdu bir int [] [] değiştirirseniz bunu buldum ] [] int [,] yerine – Tigraine

cevap

5

Dizininizi dizi dizisi olarak değiştirirseniz, daha kolay olur.

int[][] original = new[] 
            { 
             new int[] {1, 2}, 
             new int[] {5, 6}, 
             new int[] {9, 10}, 
             new int[] {13, 14} 
            }; 

ve döndürme yöntemi: int [: Eğer diziler başka bir yol kullanmak olsaydı

private static int[][] Rotate(int[][] input) 
{ 
    int length = input[0].Length; 
    int[][] retVal = new int[length][]; 
    for(int x = 0; x < length; x++) 
    { 
     retVal[x] = input.Select(p => p[x]).ToArray(); 
    } 
    return retVal; 
} 
+0

Teşekkürler Tigraine, arama işlevimi biraz değiştirmek zorunda kalacağım, ama sorun yok – user327764

+0

Onunla tamamen memnun değilim. Ama sayımcı, her iki boyutun tüm unsurları ile gider ve bu biraz daha zor hale getirir .. – Tigraine

+0

Bu da [] [] dizisi ile çalışır, sadece benim arama biraz değiştirmek zorunda kaldı [] [ ], ama [,] kullanmak daha kolay. Ben sadece biraz googling yaptım ve görünüşe göre, (benim için sürpriz) [] [] daha hızlıdır [,] – user327764