#c# #jagged-arrays
#c# #неровные массивы
Вопрос:
При печати этого неровного массива я получаю, что количество строк на 1 меньше, чем ожидалось. Он должен начинаться с 0-го индекса по (h-1)-й индекс, создавая в общей сложности h строк. Что я делаю не так?
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] " ");
}
}
Комментарии:
1. Сколько строк вы ожидали и сколько строк было на самом деле напечатано?
Ответ №1:
Это потому, что ваш внутренний цикл for имеет условие j < i
. Если i
равно 0 на первом проходе, внутренний цикл for не будет передан.
Попробуйте с
for(int j = 0; j < arr[i].Length; j )
{
Console.Write(arr[i][j] " ");
}
Комментарии:
1. Да, это оно!
Ответ №2:
Массивы имеют растущий список элементов, начиная с 1, поэтому, если вы хотите просканировать все элементы:
for(int i = 0; i < h; i )
{
Console.WriteLine();
for(int j = 0; j < (i 1); j )
{
Console.Write(arr[i][j] " ");
}
}
Комментарии:
1. Опять же, еще один правильный ответ, извините, ребята, похоже, я не могу сейчас удалить свои ответы без пометки.
Ответ №3:
Не должно ли это быть:
new int[i];
Вместо:
new int[i 1]
Или это h - 1
? Просто измените этот индекс массива.
Или вам нужно j < arr[i].Length