2016-11-29 73 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