2016-11-29 76 views
0

對於此程序,我要求用戶輸入數組大小,然後按時間順序填充數字,直到數組滿了。我想然後把這個數組放入網格中。我想知道是否可以在某個點開始數組的輸入,比如它是數字1,2,3,4,5,6,7,8,9。10.我能夠開始輸入在像[0,2]這樣的特定點上,所以基本上不使用第一個槽來使網格變得像這樣;在特定點填充2D陣列

[] [] [1] [2] [3] 
[4] [5] [6] [7] [8] 
[9] [10] [] [] [] 

我想知道是否和如何我將能夠做到這一點 預先感謝您!

class Program 
    { 
     static void Main(string[] args) 
     { 

     int Height = 4; 
     int Width = 5; 

     int[,] grid = new int[Height, Width]; 

     Console.Write("Input Number: "); 
     int number = int.Parse(Console.ReadLine()); 
     int[] InputNumber = new int[number]; 
     var randomNumbers = Enumerable.Range(1, number).ToArray(); 

     /* 
     [0,0] [0,1] [0,2] [0,3] [0,4] 
     [1,0] [1,1] [1,2] [1,3] [1,4] 
     [2,0] [2,1] [2,2] [2,3] [2,4] 
     [3,0] [3,1] [3,2] [3,3] [3,4]*/ 

    } 
} 

}

+0

您需要一個嵌套for循環來將您的整數添加到您的網格數組。一旦你有了,你需要做的就是抵消你開始陣列的位置或增加一個跳過計數。一旦你寫了更多的代碼,它會變得更清晰。 –

回答

0

您可以修改代碼以包括細胞偏移,如下

static void Main(string[] args) 
    { 
     int Height = 4; 
     int Width = 5; 
     int[,] grid = new int[Height, Width]; 
     Console.Write("Start Number :"); 
     int startnum = int.Parse(Console.ReadLine()); 
     Console.Write("End Number :"); 
     int endnum = int.Parse(Console.ReadLine()); 
     Console.Write("input nmber of cells to be offset at max "+Width*Height+" :"); 
     int cellofs = int.Parse(Console.ReadLine()); 
     var myNumbers = Enumerable.Range(startnum, endnum).ToArray(); 
     int t = 1; 
     for(int i=cellofs;i<Width*Height;i++) 
     { 
      int iline = i/Width; 
      int jcol = i % Width; 
      if (t <= (endnum - startnum)) 
      { 
       grid[iline, jcol] = myNumbers[t]; 
       t++; 
      } 
     } 
     for (int i = 0; i < Height; i++) 
     { 
      for (int j = 0; j < Width; j++) 
      { 
       Console.Write(grid[i, j]+" "); 
      } 
      Console.WriteLine(); 
     } 
     Console.ReadKey(); 
    } 

希望這些幫助。

+0

該代碼會將左側的所有列留空。在問題中,只有起始位置之前的單元格受到影響。 – Phil1970

+0

行int [] InputNumber = new int [number];'是無用的。沒有必要分配任何內存作爲'Enumerable.Range'已經創建一個數組。 – Phil1970

+0

另外,創建從'1'到'number'的範圍並將't'從'0'增加到'number - 1'沒有什麼意義。你可以用'1'初始化't'並在這種情況下移除數組'InputNumber',或者如果你希望代碼更通用,可以直接使用枚舉器。 – Phil1970