Вопрос синтаксиса при добавлении символа в определенную позицию строки.
Друзья, я хоть и ИТ, но не кодер. Причем от слова "совсем" - это о JS.
Брат занимается на курсах по JS, подкинул тут задачек. Но что то я туплю. Такая задача уже как то раз проскакивала по С++, но по JS - вроде нет. Я проблем, как таковых, алгоритмических не вижу. Задача - построить треугольник из любых символов. Возьмем, допустим, *, но треугольник должен быть равнобедренным... Высота, читай количество строк, задается пользователем. Я вот отдельно от него сижу - почитываю книжки... Как раз на работе сегодня... И вот что у меня получилось. var n = prompt ('Задайте высоту'); //задает пользователь высоту. Можно проверить на целое, положительное число - но это не важно. for (var line = "*"; line.length <= 2*n; line += "**") //начинаем с одного символа, прибавляя с каждым новым шагом еще по 2. Т.е. 1-3-5-7-9- и так далее document.write(line + '<br/>'); //Вывели- получили, в случае 5 высоты. * *** ***** ******* ********* Понятно что нужно в начало строки подставлять пробел по принципу - каждая строка должна иметь в начале количество пробелов по формуле количество строк (т.е. высота) - 1 - так? Точнее немного не правильно сказал. n-1 это количество пробелов для 1 строки. Для каждой последующей оно должнло уменьшаться на 1. Так вот, как в цикле JS это указать. Вроде пишу конструкциями, вроде правильными - но что то не удается. Помогите тупящему админу.... :) С другой стороны - можно ведь это как то массивом сделать? К примеру... |
JMnemonick,
так добавьте переменную для пробелов через запятую и выводите пробелы + line |
Так приблизительно так и делал....
Что то вроде вот такого... var n = prompt ('Укажите высоту треугольника в целых числах'); for (var space = " "; space.length >= 2*n; space -= " ") for (var line = "*"; line.length <= 2*n; line += "**") document.write(space + line + '<br/>'); Что и где делаю не так - не понятно... |
JMnemonick,
<script> var n = 7; for (var line = "*", space = new Array(n).join("\u2007"); line.length <= 2*n; line += "**", space = space.slice(1)){ document.write(space+line + '<br/>'); } </script> |
B tрони,
Спасибо за подсказку. Сейчас попытаюсь переварить информацию. В общем - все понятно довольно таки... Линия из * создается понятно. Для пробелов задаем массив и.... join - вполне понятно. А вот ("\u2007") это что? Если не сложно, проясните? Спасибо заранее. |
JMnemonick,
Пробел, равный по ширине цифрам |
И если не сложно...
Для меня проясните, почему не работает вот такая конструкция? var n = prompt ('Укажите высоту треугольника в целых числах'); for (var line = "*", space = new Array(n).join("\u2007"); line.length <= 2*n; line += "**", space = space.slice(1)){ document.write(space+line + '<br/>'); } С юникодом понял - спасибо. |
И если есть возможность - посоветуйте хорошие методические материалы по JS, а то что то зацепило...
Почти стыдно стало за то что так торможу... :) |
Цитата:
var n = +prompt ('Укажите высоту треугольника в целых числах'); учебник ссылка вверху, остальное практика и интерес. |
JMnemonick,
преобразование-к-числу |
Часовой пояс GMT +3, время: 22:18. |