Число строк на 1 меньше, чем ожидалось в зубчатом массиве - PullRequest
0 голосов
/ 30 марта 2019

При печати этого зубчатого массива я получаю число строк на 1 меньше ожидаемого. Он должен начинаться с 0-го индекса до (h-1) -го индекса, создавая в общей сложности h строк. Что я делаю не так?

ч это нет. рядов.

        int h = int.Parse(Console.ReadLine());

        int[][] arr = new int[h][];

        for(int i = 0; i < h; ++i)
        {
            arr[i] = new int[i+1]; 
        }

        for(int i = 0; i < h; i++)
        {
            Console.WriteLine();

            for(int j = 0; j < i; j++)
            {
                Console.Write(arr[i][j] + " ");
            }
        }

Ответы [ 3 ]

2 голосов
/ 30 марта 2019

Массивы имеют растущий список элементов, начиная с 1, поэтому, если вы хотите отсканировать все элементы:

for(int i = 0; i < h; i++)
{
    Console.WriteLine();

    for(int j = 0; j < (i + 1); j++)
    {
        Console.Write(arr[i][j] + " ");
    }
}
2 голосов
/ 30 марта 2019

Это потому, что ваш внутренний цикл for имеет условие j < i.Если i равно 0 в первом проходе, внутренний цикл for не будет передан.

Попробуйте это с

for(int j = 0; j < arr[i].Length; j++)
{
  Console.Write(arr[i][j] + " ");
}
0 голосов
/ 30 марта 2019

Не должно ли это быть:

new int[i];

Вместо:

new int[i+1]

Или это h - 1?Просто измените этот индекс массива.

Или вам нужно j < arr[i].Length

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...