Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*вивести на екран ялинку такого розміру, який вказує користувач*/
- /*==================================================================================*/
- /* якщо вводити висоту ялинки, можна не враховуючи піньок навіть, то це не ускладнить задачу .) */
- let numb = prompt("Введите непарное число:"); /* скорочування краще лише ті, які є загальновідомими, тут можна num
- хоча якщо відомо розмір чого ми вводимо, то краще sizeOfЩось можливо widthOfTree у вашому коді може підійти */
- let spc = numb / 2; // space? краще не скорочувати, але якщо кількість пробілів то можна spaceNum
- let spc2 = (numb / 2) - 1; // ох, щось пійшли дублюватися змінні..
- let spc3 = numb / 2;
- let spc4 = (numb / 2) - 1;
- // === Условие непарного числа ===
- if (numb % 2 == 0) {
- alert("Вы ввели парное число... Новый год отменяется =(");
- throw new Error("Непарное число");
- } else { // скоріш за все після викидання виключення елсе не потрібен.
- //=== Цикл новой строки ===
- for (let i = 0; i < numb; i++) {
- //Вложенный цикл заполнения строки
- for (let i2 = 0; i2 < numb; i2++) { // j можна
- //Условие выполнения отступа или *
- if (spc < i2 || spc2 > i2) {
- console.put(" ");
- } else {
- console.put("*");
- }
- }
- //Инкремент пременной (косой отступ)
- spc++;
- spc2--;
- //Переход на сл. строку
- console.log(""); // можна без параметру console.log()
- //Условие последней точки
- if (i > spc4) {
- for (let i3 = 0; i3 < numb; i3++) {
- //Условие отцентровки
- if (spc3 < i3 || spc4 > i3) {
- console.put(" ");
- } else {
- console.put("*");
- }
- }
- break; // буває корисним, але у більшості випадків свідчить про не ідеальний алгоритм. Краще кількість рядків знати.
- }
- } //=== Конец цикла новой строки ===
- } //=== Конец выполнения условия непарного числа ===
- /* цікаве рішення, з певними але. вважаю, що піньок можна винести з основного циклу , просто винести в окремий
- * цикл до середини ширини мінус один вивести пробіли, а потім зірку. Змінні з числовими індексами це не гуд,
- * людина заслуговує читати код де змінні мають іменування що підказують для чого вони потрібні, що містять.
- * Вже другий код ялинки поспіль в подібному стилі за один вечор, це дивний збіг. Вважаю може бути корисно вам
- * передивитися попереднє рев'ю pastebin.com/pfUpTVzJ , бо вам я б порадив приблизно те саме що до декомпозиції,
- * а ще не ускладнювати, а навпаки - робити простіше але читабільніше. Виразити свої вміння можна не
- * погіршуючи читабельність коду. Ваше рішення з іншими іменуваннями :*/
- let treeWidth = +prompt("Введите непарное число:"); // + перед промпт перетворює строкове значення до числового
- // === Условие непарного числа ===
- if (treeWidth % 2 === 0) {
- alert("Вы ввели парное число... Новый год отменяется =(");
- throw new Error("Непарное число");
- }
- /* якщо дані пройшли перевірку, тоді вже працюємо як з валідними. Тобто спочатку відкидаємо "шелуху"*/
- let treeHeight = (treeWidth + 1) / 2; // якщо отримаємо непарну ширину то висота без пенька так рахується.
- let finishStarPosition = treeWidth / 2; // не зміг підібрати норм іменування, а це сигнал що до уточнення алгоритму.
- let startStarPosition = (treeWidth / 2) - 1;
- // === Цикл новой строки ===
- for (let row = 0; row < treeHeight; row++) {
- for (let currentPosition = 0; currentPosition < treeWidth; currentPosition++) { // Вложенный цикл заполнения строки
- if (currentPosition < startStarPosition || currentPosition > finishStarPosition) { // Условие выполнения отступа или *
- console.put(" ");
- } else {
- console.put("*");
- }
- }
- finishStarPosition++; // Инкремент пременной (косой отступ)
- startStarPosition--;
- console.log(); // Переход на сл. строку
- } // === Конец цикла новой строки ===
- // Условие последней точки - ми тут, і цього вже достатньо, не треба зайвих умов, циклів. Почитайте про бритву Оккама.)
- // піньок
- for (let i = 0; i < treeWidth / 2 - 1; i++) {
- console.put(" ");
- }
- console.put("*");
- /* я б розділив цикл виведення лівих пробілів, зірок, правих пробілів на три цикли, було б простіше*/
- /* Гарного коду*/
Add Comment
Please, Sign In to add comment