package com.javarush.task.pro.task05.task0510;
/*
Треугольный массив
*/
public class Solution {
public static int[][] result = new int[10][]; создание массива
public static void main(String[] args) {
//напишите тут ваш код
for(int i = 0; i < result.length; i++){ внешний цикл, который с помощью метода length проверяет кол-во элементов в строке?
result[i] = new int[i+1]; массив result с индексом i считается нулевой строкой? к которой мы прибавляем +1 каждую итерацию,
до 10?
for(int j = 0; j < result[i].length; j++){ внутренний цикл, в котором массив с индексом i проверяет кол-во элементов в строке? откуда он знает
до какого кол-ва нужно считать?
result[i][j] = i + j; это переменная? или массив? в который мы заносим результат сложения двух индексов?
System.out.print(result[i][j] + " ");
}
System.out.println();
}
}
}
Igor
8 уровень
Помогите расшифровать
Обсуждается
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Yevhenii Batiievskyi
11 июня 2021, 18:34
Хорошо, что для себя веду заметки по каждой задаче.
Надеюсь это чем то поможет ():
/* looks like this:
row\col [0] [1] [2]
l
e [0] [0 + 0]
n
g [1] [1 + 0] [1 + 1]
t
h [2] [2 + 0] [2 + 1] [2 + 2]
*/
/* for each row we add a new array (row + 1).length
and fill it with a value (row + col)
so: in row[0] we add an array (0 + 1).length
[ ]
and fill it with value (0 + 0)
[0]
*/
/* in row[1] we add an array (1 + 1).length
so: in row[1] we have array length of 2
[ ][ ]
and fill its values with value (row + col)
for row[1] \ col[0] -> value: (1 + 0) = 1
for row[1] \ col[1] -> value: (1 + 1) = 2
[1][2]
*/
/* in row[2] we add an array (2 + 1).length
so: in row[2] we have array length of 3
[ ][ ][ ]
and fill it's values with value (row + col)
for row[2] \ col[0] -> value: (2 + 0) = 2
for row[2] \ col[1] -> value: (2 + 1) = 3
for row[2] \ col[2] -> value: (2 + 2) = 4
[2][3][4]
*/
for (int row = 0; row < result.length; row++) {
result[row] = new int[row + 1];
for (int col = 0; col < result[row].length; col++) {
result[row][col] = row + col;
System.out.print(result[row][col] + " ");
// if want better looking columns, use this:
// System.out.printf("%2d ", result[row][col], " ");
}
System.out.println();
}
0
ГоффMaster
8 июня 2021, 21:52
Здесь надо понять, что создаётся массив из массивов. Массив result, в котором каждый элемент result[i] - это тоже массив, длиной i+1. То-есть в result[0] находится массив длиной 1, в result[1] - длиной 2, и так далее, вплоть до result[9], в котором лежит массив длиной 10.
result[i] = new int[i+1]; как раз и создаёт в каждом элементе result[i] новый (безымянный) массив длиной i+1
Что бы добраться до конечного элемента, нужно сначала взять индекс "верхнего" массива (result[i]), а так как он сам по себе тоже массив, добавить индекс уже этого "внутреннего массива - получится result[i][j].
Туда записывается сумма индексов - result[i][j] = i + j;.
В результате наш массив массивов выглядит вот так:
[0]
[1, 2]
[2, 3, 4]
[3, 4, 5, 6]
[4, 5, 6, 7, 8]
...
+1