Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для SergioO
261 / 209 / 99
Регистрация: 13.12.2015
Сообщений: 1,098

Прокомментировать выражение на С++

08.02.2016, 20:12. Показов 519. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
У Р.Сэджвика "Фунд алг на С++" т.т. 1-4 на стр. 52 есть такая фраза
"Наименьшее целое число, большее lgN, равно количеству бит, необходимых для
представления N в двоичном формате; точно так же наименьшее целое, большее
logio-N, — это количество цифр, необходимое для представления 7V в десятичном фор-
мате. Оператор C++
for (lgN = 0; N > 0; lgN++, N /= 2) ;
"
что значит выделенный жирным код?
lgN = 0 <=> N = 1,
N > 0? так N < 0 быть не может.
lgN++ чего он тут увеличить то хочет?
то, о чем он говорит
C++
1
(int)ceil(log2(N)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.02.2016, 20:12
Ответы с готовыми решениями:

Добавить числа в скобочное выражение, чтобы получилось правильное арифметическое выражение
1.Дана последовательность из N круглых, квадратных и фигурных скобок. Выяснить, можно ли добавить в неё цифры и знаки арифметических...

Подставить в заданное выражение знаки +,-,*,/ так, чтобы выражение было истинным
Помогите плз! Надо подставить в заданное выражение знаки +,-,*,/ так, чтобы выражение было истинным: ((((((1 2) 3) 4) 5) 6)=36 ...

Как перевести это математическое выражение в выражение понятное для компилятора?
вот пример: a=5*atan(x)-(1/4)*acos(x); b=(x+3*abs(x-y)+pow(x,2))/(abs(x-y)*z+pow(x,2));

8
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
08.02.2016, 20:16
Цитата Сообщение от SergioO Посмотреть сообщение
что значит выделенный жирным код?
Это цикл.

Цитата Сообщение от SergioO Посмотреть сообщение
lgN++ чего он тут увеличить то хочет?
Переменную.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
08.02.2016, 20:18
Цитата Сообщение от SergioO Посмотреть сообщение
так N < 0 быть не может
может быть равно
Цитата Сообщение от SergioO Посмотреть сообщение
lgN++ чего он тут увеличить то хочет?
на выходе будет двоичный логорифм
0
 Аватар для SergioO
261 / 209 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
08.02.2016, 20:57  [ТС]
castaway,смысл писать этот цикл? Найти кол-во бит для представления десятичного числа и так можно, как я показал. Зачем цикл то?Kastaneda, lgN при N=0?! Нет, не может. Чему равен log(0)?
N > 0 будет всегда. Может он имел в виду lgN > 0?
Мозг не варит - спать завтра буду смотреть.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
08.02.2016, 21:03
Цитата Сообщение от SergioO Посмотреть сообщение
смысл писать этот цикл?
Понятия не имею. Сам по себе (без какого-либо дополнительного кода) этот цикл не несёт смысла.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
09.02.2016, 07:12
SergioO, цикл начинается с некого N, на каждой итерации N делится на 2, при этом lgN увеличивается на 1, по окончанию цикла N будет равен 0, а lgN будет равен логарифму N.
0
 Аватар для SergioO
261 / 209 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
09.02.2016, 07:46  [ТС]
Цитата Сообщение от Kastaneda Посмотреть сообщение
цикл начинается с некого N
lgN=0, те N=1
Цитата Сообщение от Kastaneda Посмотреть сообщение
на каждой итерации N делится на 2
N = 1/2, 1/4, ....
lgN = -1, -2, ...
lgN++ = 0, -1, ...
Цитата Сообщение от Kastaneda Посмотреть сообщение
по окончанию цикла N будет равен 0, а lgN будет равен логарифму N
не могли бы написать минимальную рабочую программу, чтобы продемонстрировать сие...
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
09.02.2016, 08:03
Цитата Сообщение от SergioO Посмотреть сообщение
не могли бы написать минимальную рабочую программу, чтобы продемонстрировать сие...
А в коде косяк Косяк потому что любое число в нулевой степени это 1, в коде этого не учитывается.
Пример (с косяком)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cmath>
 
int main() 
{
    int N = 128;
    int lgN;
 
    for (lgN = 0; N > 0; lgN++, N /= 2) ; 
    std::cout << "My LgN = " << lgN << std::endl;
 
    N = 128;
    std::cout << "cmath::log2 = " << log2((double)N) << std::endl;
 
    return 0;
}
без косяка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cmath>
 
int main() 
{
    int N = 128;
    int lgN;
 
    for (lgN = 0; N > 1; ++lgN, N /= 2) ; 
    std::cout << "My LgN = " << lgN << std::endl;
 
    N = 128;
    std::cout << "cmath::log2 = " << log2((double)N) << std::endl;
 
    return 0;
}
1
 Аватар для SergioO
261 / 209 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
09.02.2016, 08:30  [ТС]
Цитата Сообщение от Kastaneda Посмотреть сообщение
int lgN;
вот оно чего, Михалыч...
а я lgN как функцию воспринимал просто так, условно, записанную
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.02.2016, 08:30
Помогаю со студенческими работами здесь

Какое выражение необходимо подставить, чтобы данное логическое выражение стало истинным?
Если вместо знака &quot;?&quot; подставить одно из выражений, то при х=1 данное логическое выражение станет истинным &quot;?&quot; ((x&gt;0) and...

Показать что релятивисткое выражение кинетической энергии переходит в соответствующее выражение классической механики.
Показать что релятивисткое выражение кинетической энергии T=(m-m0)*c в квадрате при V&lt;&lt;C переходит в соответствующее выражение...

Проанализировать выражение, найти область допустимых значений аргумента x. Определить, как вычислить выражение
Проанализировать выражение, найти область допустимых значений аргумента x. Определить, как вычислить выражение, если его оформить в виде...

Оформите выражение c=a+b; в виде функции и вызовите функцию в том месте, где стоит это выражение
Вот программа #include &lt;stdio.h&gt; int main () { int a,b,c; printf (&quot;Vvedite 2 chisla: \n&quot;); scanf (&quot;%d&quot;,&amp;a); scanf...

Заданы глубина подсписка, позиция и s-выражение. Включить s-выражение во все имеющиеся подсписки заданной глуб
Вот задание: Заданы глубина подсписка, позиция и s-выражение. Включить s-выражение во все имеющиеся подсписки заданной глубины и на...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru