JavaScript

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

Хотелось бы простое решение и объяснить как это работает.
Я понимаю что внешений цикл на каждой итерации должен дорисовывать звёздочку на одну больше в каждом ряду. Никак не могу сообразить как это сделать.
Пытаюсь делать. Код здесь:
//codepen.io/vvv7220/pen/jONpKXJ?editors=0010
Олег Букавнёв
Олег Букавнёв
28 587
Не благодари. Надеюсь что всё понятно. Просто делишь фигуру на 2 части, первую часть проходишь циклом, и вторую тоже циклом но только в обратном порядке, в итоге получается одна фигура. Как я не пытался сделать по другому, в итоге код становился непонятным. Также есть и второй способ, где используется только один внешний цикл и внутренний. Но думаю первый вариант более понятнее, чем второй, но зато второй покороче.
МФ
Мухаммадшо Фатхуллоев
2 396
Лучший ответ
Олег Букавнёв не работает код на первом скрине. второй не стал смотреть. очень сложный для понимания
С ITVDN что ли задача? Хотя там чуть посложнее, требуется построить ромб
var nn = 5;
var ll = 0;
for (var ii = 0; ii < nn; ii++) {
for (var kk = 0; kk < (2 * nn / 2 - ii) ; kk++) { // 2 * 5 / 2 - 0 (1, 2, 3, 4, 5) = 5 (4, 3, 2, 1, 0) С каждым циклом пробелов выводится меньше на единицу
document.write(" &nbsp&nbsp");
}
for (var jj = 0; jj < ll; jj++) {
document.write(" &nbsp * ");
}
ll++; // выводится * и ll увеличивается на единицу
document.write("<br>");
}
for (var ii = 0; ii < nn; ii++) {
for (var kk = 0; kk < (2 / nn * 2 + ii) ; kk++) {
document.write(" &nbsp");
}
for (var jj = 0; jj < ll; jj++) {
document.write("&nbsp * ");
}
ll--;
document.write("<br>");
}
Олег Букавнёв Спасибо конечно. Но этот вариант очень сложен для меня что бы понять работу циклов. Если можно сделай упрощенный вариант с комментариями.
Аскар Бегимбетов Да что ж такое с этим js bin творится...
https://jsbin.com/curemolawi/edit?html,js,output
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/>";
Сергей 64
Сергей 64
70 952
Олег Букавнёв не работает
Эх, печально видеть как человек приобретший курс по 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.