Форум программистов, компьютерный форум CyberForum.ru

Написать функцию, которая для заданого целого числа Х вычисляет количество пар (расположенных друг за другом) нулевых битов в этом числе - C++

Восстановить пароль Регистрация
 
ShadowThunder
0 / 0 / 0
Регистрация: 14.05.2013
Сообщений: 23
16.05.2013, 21:54     Написать функцию, которая для заданого целого числа Х вычисляет количество пар (расположенных друг за другом) нулевых битов в этом числе #1
Помогите плиз)) Нужно срочно на завтра написать прогу на С++. Если можно с блок-схемой. Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2013, 21:54     Написать функцию, которая для заданого целого числа Х вычисляет количество пар (расположенных друг за другом) нулевых битов в этом числе
Посмотрите здесь:

C++ Написать функцию, которая определяет количество вхождений в СПИСОК елемента, заданого пользователем.
C++ Функции. побитовые операции. Написать функцию, которая для заданного целого числа Х вычисляет количество единичных битов в этом числе
Написать функцию, которая для заданного числа Х вычисляет количество единичных битов в этом числе C++
C++ Написать программу, которая вычисляет количество цифр во введенном пользователем числе
Написать функцию, которая для заданного x посчитает количество единичных битов в этом числе. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
16.05.2013, 22:22     Написать функцию, которая для заданого целого числа Х вычисляет количество пар (расположенных друг за другом) нулевых битов в этом числе #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
using namespace std;
 
int main ()
{
    unsigned x = 24487; //0000 0000 0000 0000 0101 1111 1010 0111
    unsigned right = 2, left = 1, i = 0, pair_count = 0;
 
    while ( ++i != 32 ) {
        pair_count += ( !( right & x ) && !(left & x) ) ? 1 : 0;
        right <<= 1;
        left <<= 1;
    }
 
    cout << pair_count;
    return 0;
}
ShadowThunder
0 / 0 / 0
Регистрация: 14.05.2013
Сообщений: 23
13.06.2013, 19:00  [ТС]     Написать функцию, которая для заданого целого числа Х вычисляет количество пар (расположенных друг за другом) нулевых битов в этом числе #3
Написать функцию, которая для заданого целого числа Х вычисляет количество пар (расположенных друг за другом) нулевых битов в этом числе с помощью функций пользователя. Заранее спасибо.
GetVariable
 Аватар для GetVariable
163 / 119 / 5
Регистрация: 17.03.2013
Сообщений: 283
13.06.2013, 19:02     Написать функцию, которая для заданого целого числа Х вычисляет количество пар (расположенных друг за другом) нулевых битов в этом числе #4
Приведите пример работы программы, на примере x = 5
ShadowThunder
0 / 0 / 0
Регистрация: 14.05.2013
Сообщений: 23
13.06.2013, 19:10  [ТС]     Написать функцию, которая для заданого целого числа Х вычисляет количество пар (расположенных друг за другом) нулевых битов в этом числе #5
Число 5 надо подать в бинарной системе (101), то есть результат будет 0. Если, например, число 28 (11100), то результат будет 1 (00).
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.06.2013, 19:19     Написать функцию, которая для заданого целого числа Х вычисляет количество пар (расположенных друг за другом) нулевых битов в этом числе #6
а для числа 10001?

C++
1
2
3
4
int Count(unsigned a)
{
   return a ? !(a & 3) + Count(a >> 1) : 0;
}
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
13.06.2013, 19:34     Написать функцию, которая для заданого целого числа Х вычисляет количество пар (расположенных друг за другом) нулевых битов в этом числе #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
using namespace std;
 
int main ()
{
    unsigned x = 23344; //0000 0000 0000 0000 0101 1011 0011 0000
    unsigned right = 2, left = 1, i = 0, pair_count = 0;
 
    while ( ++i != 32 ) {
        pair_count += ( !( right & x ) && !(left & x) ) ? 1 : 0;
        right <<= 1;
        left <<= 1;
    }
 
    cout << pair_count;
    return 0;
}
Добавлено через 3 минуты
http://ideone.com/X629iH
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.06.2013, 19:37     Написать функцию, которая для заданого целого числа Х вычисляет количество пар (расположенных друг за другом) нулевых битов в этом числе #8
Olivеr, вряд ли незначащие нулевые биты тоже надо учитывать. в этом случае разрядность типа данных надо указывать в задании.
ShadowThunder
0 / 0 / 0
Регистрация: 14.05.2013
Сообщений: 23
13.06.2013, 19:59  [ТС]     Написать функцию, которая для заданого целого числа Х вычисляет количество пар (расположенных друг за другом) нулевых битов в этом числе #9
Спасиба, но можно ли как то это сделать через функции пользователя?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2013, 20:00     Написать функцию, которая для заданого целого числа Х вычисляет количество пар (расположенных друг за другом) нулевых битов в этом числе
Еще ссылки по теме:

C++ Составить и использовать функцию, которая определяет количество цифр одного целого числа
Написать функцию, которая вычисляет значение x*y. Числа x и y могут быть любыми дробными положительными числам C++

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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.06.2013, 20:00     Написать функцию, которая для заданого целого числа Х вычисляет количество пар (расположенных друг за другом) нулевых битов в этом числе #10
Цитата Сообщение от ShadowThunder Посмотреть сообщение
Спасиба, но можно ли как то это сделать через функции пользователя?
А чем функция Count() не функция пользователя???
Yandex
Объявления
13.06.2013, 20:00     Написать функцию, которая для заданого целого числа Х вычисляет количество пар (расположенных друг за другом) нулевых битов в этом числе
Ответ Создать тему
Опции темы

Текущее время: 04:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru