3 / 3 / 1
Регистрация: 23.01.2014
Сообщений: 80
1

Как работает эта часть кода?

14.08.2015, 04:33. Показов 1128. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Читаю книгу Data Structures and Algorithms with JavaScript http://shop.oreilly.com/product/0636920029557.do застрял на вот этом моменте

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
function Stack() {
    this.dataStore = [];
    this.top = 0;
    this.push = push;
    this.pop = pop;
    this.peek = peek;
    this.clear = clear;
    this.length = length;
}
 
// The first function to implement is the push() function.
 
function push (element) {
    this.dataStore[this.top++] = element;
}
 
// The peek() function returns the top element of the stack by accessing the element at
// the top-1 position of the array
 
function peek () { // If you call the peek() function on an empty stack, you get undefined as the result.
    return this.dataStore[this.top-1];
}
 
// The pop() function does the reverse of the push()
 
function pop () {
    return this.dataStore[--this.top];
}
 
// There will be situations when you need to know how many elements are stored in a stack.
 
function length() {
    return this.top;
}
 
// Finally, we can clear a stack by simply setting the top variable back to 0
 
function clear() {
    this.top = 0;
}
 
function mulBase (num, base) {
    var s = new Stack();
    do {
        s.push(num % base);
        num = Math.floor(num = num / base);
    } while (num > 0);
    var converted = "";
    while (s.length() > 0) {
        converted = converted + s.pop();
    }
    return converted;
}
 
/*var num = 32;
var base = 2;
var newNum = mulBase(num, base);
print(num + " converted to base " + base + " is " + newNum);*/
 
// output:
// 32 converted to base 2 is 100000
ни как не могу понять как работает конкретно вот эта часть

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
function mulBase (num, base) {
    var s = new Stack();
    do {
        s.push(num % base);
        num = Math.floor(num = num / base);
    } while (num > 0);
    var converted = "";
    while (s.length() > 0) {
        converted = converted + s.pop();
    }
    return converted;
}
как там в выводе получается 100000. // в первой части кода в конце закомментировано

Javascript
1
2
3
4
5
var num = 32;
var base = 2;
var newNum = mulBase(num, base);
print(num + " converted to base " + base + " is " + newNum);
// 32 converted to base 2 is 100000
Please help me understand how work this code.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.08.2015, 04:33
Ответы с готовыми решениями:

Не работает часть кода
Здравствуйте! Только начал учить язык. Вопрос может показаться тупым,но я не понимаю, в чем тут...

Не работает часть кода, элементом ajax
Не работает функция send() <script type="text/javascript"...

Не работает часть кода
по какой-то причине не работает часть кода, ошибок я не замечаю, но код не хочет работать, в чём...

Как работает эта часть кода?
element *el, *n_el; int i; n_el = (element *)malloc(sizeof(element)); printf("Vvedite FIO:...

3
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
14.08.2015, 06:03 2
Лучший ответ Сообщение было отмечено zadohlik как решение

Решение

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
function mulBase (num, base) {
var s = new Stack(); // Создаем стэк
do {
s.push(num % base); // кладем в стек остаток от деления num на base
num = Math.floor(num = num / base); // num делим на base и округляем
} while (num > 0); // продолжаем цикл пока num больше нуля
var converted = ""; // инициализируем строку
while (s.length() > 0) { // цикл пока в стэке есть элементы
converted = converted + s.pop(); // строка + число из стека (остаток от деления)
}
return converted;
}
32 % 2 = 0
16 % 2 = 0
...
1 % 2 = 1
Вытаскивая наоборот (стэк) получаем:
1
0
0
0
...
0
3 / 3 / 1
Регистрация: 23.01.2014
Сообщений: 80
14.08.2015, 06:16  [ТС] 3
Цитата Сообщение от AncientPenguin Посмотреть сообщение
s.pop();
это получается именно pop и вытаскивает наоборот?

Спасибо большое. +

не много не ясно все таки для чего инициализировать строку var converted = "";

Добавлено через 3 минуты
Цитата Сообщение от zadohlik Посмотреть сообщение
для чего инициализировать строку var converted = "";
аа, чтобы записать в массив в виде строк чтоли?
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
14.08.2015, 07:18 4
Цитата Сообщение от zadohlik Посмотреть сообщение
это получается именно pop и вытаскивает наоборот?
push - стандартное название для добавления элемента, pop - для чтения и удаления (в стэке и очереди). В стэке принцип "первый вошел последний вышел".

Цитата Сообщение от zadohlik Посмотреть сообщение
аа, чтобы записать в массив в виде строк чтоли?
Чтобы данные из стэка положить в одну строку.
0
14.08.2015, 07:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.08.2015, 07:18
Помогаю со студенческими работами здесь

Разъясните пожалуйста как работает эта часть кода
K = 0 ' (ПОЯСНИТЕ ВОТ ЭТО ПОЧЕМУ 0) For i = 1 To 4 ' (Это Я знаю наверное цикл, который...

view.php?open=1 - не работает эта часть кода
Подскажите, плз, чайнику почему этот код отказывается работать. Ругается на 1-ю строчку скрипта,...

пожалуйста объяснит как эта часть кода,
var n,m:integer; a:arrayof integer; i:integer;max,col:integer; begin readln(n);max:=0;col:=0;...

Как сделать так, чтобы эта часть кода искала файлы по расширениям?
string file = @"F:\test"; string FileName; DirectoryInfo DI = new DirectoryInfo(file); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru