2016-11-29 6 views
0

Für dieses Programm habe ich den Benutzer gebeten, die Array-Größe einzugeben, die dann in chronologischer Reihenfolge mit Zahlen gefüllt wird, bis das Array voll ist. Ich möchte dann dieses Array in das Raster legen. Ich frage mich, ob es möglich ist, die Eingabe des Arrays an einem bestimmten Punkt zu starten, sagen wir, es wären die Zahlen 1, 2, 3, 4, 5, 6, 7, 8, 9 10. Wäre es möglich, die Eingabe zu starten an einem bestimmten Punkt wie [0,2], benutze also grundsätzlich nicht die ersten Slots um das Grid zu machen;2D-Array-Füllung an einem bestimmten Punkt

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

ich frage mich, ob und wie ich in der Lage wäre, diese Vielen Dank im Voraus zu tun!

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

Sie benötigen eine verschachtelte for-Schleife, um Ihre Ganzzahlen zu Ihrem Grid-Array hinzuzufügen. Sobald Sie das haben, müssen Sie nur den Anfang des Arrays versetzen oder einen Überspringungszähler hinzufügen. Sobald Sie mehr Code geschrieben haben, wird es klarer. –

Antwort

0

Sie Ihren Code ändern können, die Zellen enthalten versetzt, wie folgende

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(); 
    } 

diese Hilfe Hoffnung.

+0

Dieser Code würde alle Spalten auf der linken Seite leer lassen. In der Frage sind nur Zellen vor der Startposition betroffen. – Phil1970

+0

Die Zeile 'int [] InputNumber = new int [Nummer];' ist nutzlos. Es ist nicht notwendig, Speicher zuzuordnen, da "Enumerable.Range" bereits ein Array erzeugt. – Phil1970

+0

Es macht auch wenig Sinn, einen Bereich von "1" bis "Nummer" zu erstellen und "t" von "0" bis "Nummer - 1" zu erhöhen. Sie könnten "t" mit "1" initialisieren und in diesem Fall das Array "InputNumber" entfernen oder den Enumerator direkt verwenden, wenn der Code generischer sein soll. – Phil1970

Verwandte Themen