|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - "сколько натуральных чисел, не больших заданного K , и имеют в своем двоичном разложе |
|
C/C++ - "сколько натуральных чисел, не больших заданного K , и имеют в своем двоичном разложе
|
Новый участник Сообщения: 12 |
Профиль | Отправить PM | Цитировать задача состоит в том , что :
"сколько натуральных чисел, не больших заданного K , и имеют в своем двоичном разложении ровно три значащих нуля?" - упростили её тем, что вводится определенное число : например "23". и раскладывается в двоичный код: "10111" и вот нужно посчитать количество этих "0" с выводом сообщения есть там три "0" или нету. но тут приехал я. работать то она работает без ошибок - но только сканит число и все. что делать дальше мне пока что не понятно. |
|
Отправлено: 22:44, 13-03-2013 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать ukrop34ik, У вас я так понимаю получается еще одно число в 10 системе, только состоящее из нулей и единиц.
Т.е. 23(10)=10111(2)=10111(10) / число(система счисления) "Нарезайте" дальше получившееся число по десятичным разрядам (остаток от целочисленного деления на 10 ) и через логический "флаг" ведите подсчет нулей. Как будет реализован этот функционал, можно будет помещать все это в цикл от 1 до K. Вопрос. А размерность long позволит правильно отобразить двоичное представление максимального K ? Поэтому второй вариант -- усложнить алгоритм и вести подсчет нулей сразу. Плюс ввести булеву переменную в возвращаемый результат. |
------- Отправлено: 00:56, 14-03-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать Цитата lxa85:
алгоритм то я понял но вот код писать для меня не посильная задача. |
|
Отправлено: 00:01, 18-03-2013 | #3 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать ukrop34ik, но ведь кто-то алгоритм получения двоичного числа написал! То, что предлагаю я гораздо проще как в понимании, так и в написании. Все необходимые операции работы с переменными находятся в поисковике на раз два.
Поэтому не надо списывать себя в нубасы, лучше сразу в лентяи. |
------- Отправлено: 07:43, 18-03-2013 | #4 |
Пользователь Сообщения: 139
|
Профиль | Отправить PM | Цитировать Тут даже фактически не всегда целиком надо переводить числа, иногда будет достаточно убедится что в двоичном представлении присутствует три нуля.
P.S. Прошу прощения не заметил, что нужно точное кол-во. |
|
------- Последний раз редактировалось ViRTaCe, 18-03-2013 в 23:48. Причина: исправил Отправлено: 10:39, 18-03-2013 | #5 |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать таки вроде что то получилось но это дело просто считает количество 0 и 1
#include <iostream> int main(void) { unsigned n, n0 = 0, n1 = 0; std::cout << "enter a number: "; std::cin >> n; while(n > 0) { if (n % 2 == 0) n0++; else n1++; n /= 2; } std::cout << "1s: " << n0 << std::endl; std::cout <<"0s: " << n1 << std::endl; system("pause"); return 0; } |
Отправлено: 16:12, 20-03-2013 | #6 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать ukrop34ik, ну вот, хорошо.
А теперь используя составной оператор, усложни обработку n0 и n1 проверкой на превышение порога в 3 идущих подряд значения. Для этого в простейшем случае тебе понадобятся 2 переменные. Одна для того, чтобы сигнализировать о том, какая идет последовательность (нулей или единиц), вторая о том, что заданный порог достигнут. Для этого тебе понадобятся "вложенные" ветвления (условные переходы, они же if () {} else {}. ) Т.е. конструктивно: P.S. Оформляй пожалуйста код, тегом [code] Знак (#) на панели сверху. Так его читать проще. |
------- Отправлено: 18:27, 20-03-2013 | #7 |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать ок ша покруитм
|
Отправлено: 18:56, 20-03-2013 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Если я установлю на своем Пк клавиатурный шпион, он безопасен и не нарушает закон эт | micro8 | Хочу все знать | 7 | 08-08-2010 12:53 | |
[решено] Как обсчитать факториал БОЛЬШИХ чисел... или почему 100!=0 ? | centaurvv | AutoIt | 16 | 18-03-2010 17:36 | |
VBA - [решено] Отображение больших чисел и приведение типов | DaniilS | Программирование и базы данных | 3 | 23-05-2009 09:58 | |
Пользователи домена не имеют прав на запись на локальные диски! | C+C | Microsoft Windows NT/2000/2003 | 8 | 01-07-2008 12:50 | |
[решено] файлы не имеют уникальнного Joliet имени | Kinohunter | Оптические приводы | 2 | 26-05-2008 22:24 |
|