2016-11-29 14 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'までの範囲を作成し、 '0'から 'number - 1'まで 't'をインクリメントすることはあまり意味がありません。 't'を' 1'で初期化し、その場合は 'InputNumber'配列を削除するか、コードをより汎用的にする場合は列挙子を直接使用してください。 – Phil1970

関連する問題