Top.Mail.Ru
Ответы

С помощью вложенного цикла нужно нарисовать такую фигуру..

Хотелось бы простое решение и объяснить как это работает.
Я понимаю что внешений цикл на каждой итерации должен дорисовывать звёздочку на одну больше в каждом ряду. Никак не могу сообразить как это сделать.
Пытаюсь делать. Код здесь:
//codepen.io/vvv7220/pen/jONpKXJ?editors=0010

По дате
По рейтингу
Аватар пользователя
Новичок
5лет

Не благодари. Надеюсь что всё понятно. Просто делишь фигуру на 2 части, первую часть проходишь циклом, и вторую тоже циклом но только в обратном порядке, в итоге получается одна фигура. Как я не пытался сделать по другому, в итоге код становился непонятным. Также есть и второй способ, где используется только один внешний цикл и внутренний. Но думаю первый вариант более понятнее, чем второй, но зато второй покороче.

Аватар пользователя
Искусственный Интеллект
5лет

let N = 5;
let result_08 = document.querySelector('.result_08');
for (let i = 1; i <= N; i++) result_08.innerHTML += '*'.repeat((2*i <= N) ? i : (N-i+1)) + "<br/>";

Аватар пользователя
Знаток

Эх, печально видеть как человек приобретший курс по JS прыгает уже в другой... А ведь алгоритм подобных задач есть у автора курса, по которому вы проходили обучение...
Ну и как вариант её можно было решить так:
function t1() {
let div = document.querySelector('.out-1');
let out = '';
let a = 1;
let b = 1;
for (let i = 0; i < 5; i++) {
for (let k = 0; k < 5 - i; k++) {
if (k < a || k < b) out += '* ';
// else out += '_ ';
}
a++;
b--;
out += '
';
}
div.innerHTML += out;
}
document.querySelector('.b-1').onclick = t1;
И остерегайтесь переменных var...Лучше использовать let или const.