Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   нужна помощь в доработке программы.. (https://javascript.ru/forum/misc/72886-nuzhna-pomoshh-v-dorabotke-programmy.html)

Vados73 05.03.2018 05:34

Цитата:

Сообщение от рони (Сообщение 479792)
j0hnik,

(вангую) информатика, развитие навыка преобразования алгортима вычисления в код.

))) ошибаетесь, профессор... с JS столкнулся впервые, решил специализацию поменять (в данный момент работаю в сфере весьма далекой от программирования и информатики), изучение начал по книге Д.Фленагана.. возможно где-то и есть подобные программы, но я хотел написать её сам, вышло наверное коряво, но прошу не судить строго, это моя первая ))

laimas 05.03.2018 05:44

Цитата:

Сообщение от j0hnik
в образовательных учреждениях мотивировать умеют (писать какую нибудь ерунду, которая итак уже есть)

Когда задают задания, которые не имеют практической ценности в зависимости, к примеру, от платформы или сферы применения языка, это да. А знание/понимание этого алгоритма, это не ерунда, без знания этого не было бы toString(). Кроме традиционного деления на 2 (кстати если говорить об алгоритме, то для полного представления картины и деления по модулю не должно быть, должна быть проверка), есть еще и метод сравнения уменьшающихся степеней:

var n, m = [], b = '';
if(n = prompt('Number')) {
    if(n > 1) {
        for(var i = k = 0; k < n; i++) {
            k = Math.pow(2, i);
            m.push(k);
        }

        m.pop();

        while(i = m.pop())  b += n >= i ? (n -= i, 1) : 0;
    } else b = n;
    
    alert(b) 
}


В основе то всего, включая и toString(), обычная бинарная логика. А двоичное представление имеет еще и множество форматов, к примеру двоично-десятичный, который используется сплошь и рядом, к примеру в часах. Ну-ка попробуйте перевести десятичное в двоично-десятичное представление используя toString(). ;)

MallSerg 05.03.2018 12:44

<script>
// Это же JS тут все просто и понятно =)

var i=0,s='';
NumToBinStr=n=>{var i=0,s='';while(s+=n&1<<i++?1:0,i<31);return s};

while ( s+=i+'>>'+NumToBinStr(i)+'<br>',i++<954);
document.write (s);
</script>


Часовой пояс GMT +3, время: 01:58.