Member 12877584 Ответов: 1

Могу ли я выбрать позицию для начала заполнения 2d-массива?


Для этой программы я попросил пользователя ввести размер массива, а затем заполнить его числами в хронологическом порядке до тех пор, пока массив не будет заполнен. Затем я хочу поместить этот массив в сетку. Мне было интересно, можно ли начать ввод массива в определенный момент, скажем, это были числа 1, 2, 3, 4, 5, 6, 7, 8, 9 10. Смогу ли я начать ввод в определенной точке, например [0,2], так что в принципе не используйте первые слоты, чтобы сделать сетку похожей;

[] [] [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]*/

    }
}


Что я уже пробовал:

я новичок в программировании на c# и перепробовал почти все, потратив столько часов на то,чтобы разобраться в этом сам, а также на исследования, однако я ничего не могу найти.

PIEBALDconsult

Да. Ты можешь.
Как бы вы это сделали с колодой карт?

preety sunita

если вы не хотите сначала использовать некоторые слоты, то инициализируйте их каким-нибудь уникальным числом, например -999 или 0. Потому что я думаю, что вы не можете оставить его пустым, если это целочисленный массив.

gggustafson

Это не только не ответ, но это неправильно во многих других отношениях!!!

preety sunita

сезонники..

1 Ответов

Рейтинг:
0

Cristina Carrasco Angulo

Я сделал этот пример, надеюсь, он поможет:

static void Main(string[] args)
{

    int Height = 4;
    int Width = 5;

    Console.Write("Height: ");
    Height = int.Parse(Console.ReadLine());

    Console.Write("Width: ");
    Width = int.Parse(Console.ReadLine());

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

    //TEst
    PrintGrid(grid, Height, Width);
    //Console.ReadLine();

    //Console.Write("Input Number: ");
    Console.Write("Input Number of Start SLOT between 1 and " + (Height * Width) + ": ");
    int startSlot = int.Parse(Console.ReadLine());

    Console.Write("Input Number. How many SLOT to fill between 1 and " + ((Height * Width) -startSlot+1) + ": ");
    int numberSlot = int.Parse(Console.ReadLine());

    ///int[] InputNumber = new int[numberSlot];
    //var randomNumbers = Enumerable.Range(1, number).ToArray();
    //grid[0, 2] = randomNumbers[0];//Put direct in the position

    //Randoms numbers to insert
    int[] numbers = new int[numberSlot];
    Random randNum = new Random();
    for (int i = 0; i < numberSlot; i++)
    {
        numbers[i] = randNum.Next(1, (Height * Width));
    }

    //Insert from the start position
    int pos = 0;
    int numberIndex = 0;
    for (int i = 0; i < Height; i++)
    {
        for (int j = 0; j < Width; j++)
        {
            //ACTUAL POSITION
            pos++;
            if (pos == startSlot || pos > startSlot) {
                if (numberIndex < numberSlot) {
                    grid[i, j] = numbers[numberIndex];
                    numberIndex++;
                }
            }
        }
    }

    PrintGrid(grid, Height, Width);
    Console.ReadLine();
    /*
    [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]*/

}

static void PrintGrid(int[,] grid,  int h,int w) {
    Console.Write("\nPrint Grid\n");
    for (int i = 0; i< h; i++) {
        for (int j = 0; j < w; j++) {
            Console.Write( (grid[i, j]).ToString() + " ");
        }
        Console.Write("\n");
    }
}