Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.04.2016, 14:04
Новичок на форуме
Отправить личное сообщение для JMnemonick Посмотреть профиль Найти все сообщения от JMnemonick
 
Регистрация: 10.04.2016
Сообщений: 7

Вопрос синтаксиса при добавлении символа в определенную позицию строки.
Друзья, я хоть и ИТ, но не кодер. Причем от слова "совсем" - это о 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, 10.04.2016 в 14:26.
Ответить с цитированием
  #2 (permalink)  
Старый 10.04.2016, 14:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,132

JMnemonick,
так добавьте переменную для пробелов через запятую и выводите пробелы + line
Ответить с цитированием
  #3 (permalink)  
Старый 10.04.2016, 14:46
Новичок на форуме
Отправить личное сообщение для JMnemonick Посмотреть профиль Найти все сообщения от JMnemonick
 
Регистрация: 10.04.2016
Сообщений: 7

Так приблизительно так и делал....

Что то вроде вот такого...

var n = prompt ('Укажите высоту треугольника в целых числах');

for (var space = " "; space.length >= 2*n; space -= "  ")
for (var line = "*"; line.length <= 2*n; line += "**")


    document.write(space + line + '<br/>');


Что и где делаю не так - не понятно...
Ответить с цитированием
  #4 (permalink)  
Старый 10.04.2016, 15:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,132

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>
Ответить с цитированием
  #5 (permalink)  
Старый 10.04.2016, 15:50
Новичок на форуме
Отправить личное сообщение для JMnemonick Посмотреть профиль Найти все сообщения от JMnemonick
 
Регистрация: 10.04.2016
Сообщений: 7

B tрони,

Спасибо за подсказку.
Сейчас попытаюсь переварить информацию.

В общем - все понятно довольно таки...

Линия из * создается понятно.
Для пробелов задаем массив и.... join - вполне понятно.
А вот ("\u2007") это что?

Если не сложно, проясните?

Спасибо заранее.

Последний раз редактировалось JMnemonick, 10.04.2016 в 16:01.
Ответить с цитированием
  #6 (permalink)  
Старый 10.04.2016, 16:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,132

JMnemonick,
Пробел, равный по ширине цифрам
Ответить с цитированием
  #7 (permalink)  
Старый 10.04.2016, 16:00
Новичок на форуме
Отправить личное сообщение для JMnemonick Посмотреть профиль Найти все сообщения от JMnemonick
 
Регистрация: 10.04.2016
Сообщений: 7

И если не сложно...

Для меня проясните, почему не работает вот такая конструкция?

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/>');
    }


С юникодом понял - спасибо.

Последний раз редактировалось JMnemonick, 10.04.2016 в 16:03.
Ответить с цитированием
  #8 (permalink)  
Старый 10.04.2016, 16:02
Новичок на форуме
Отправить личное сообщение для JMnemonick Посмотреть профиль Найти все сообщения от JMnemonick
 
Регистрация: 10.04.2016
Сообщений: 7

И если есть возможность - посоветуйте хорошие методические материалы по JS, а то что то зацепило...

Почти стыдно стало за то что так торможу...
Ответить с цитированием
  #9 (permalink)  
Старый 10.04.2016, 16:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,132

Сообщение от JMnemonick
почему не работает вот такая конструкция?
потому что строка не число
var n = +prompt ('Укажите высоту треугольника в целых числах');
учебник ссылка вверху, остальное практика и интерес.
Ответить с цитированием
  #10 (permalink)  
Старый 10.04.2016, 16:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,132

JMnemonick,
преобразование-к-числу
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Привязать закрытие окна bootstrap при наатии только на определенную кнопку voron121 Библиотеки/Тулкиты/Фреймворки 0 15.08.2014 02:23
Всплытие событий или что то не так... Кирюха =) jQuery 6 30.03.2013 12:56
Как найти позицию каретки (номер символа) относительно всего документа? sbudyakov Общие вопросы Javascript 2 10.10.2012 17:00
Гостевая Ajax + php не обнавляется при добавлении сообщения onuvidelsolnce AJAX и COMET 6 27.11.2011 21:47
Получение данных строки грида при нажатии сторонней кнопки Allan Stark ExtJS 4 17.11.2011 19:21