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

Рекурсивная функция вычисления разрядности числа в двоичном виде - C++

Восстановить пароль Регистрация
 
ilikeMagic
11 / 11 / 2
Регистрация: 26.04.2012
Сообщений: 104
17.10.2012, 02:41     Рекурсивная функция вычисления разрядности числа в двоичном виде #1
Есть неработающий код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
unsigned char capacity (unsigned char number)
{
 
        if (number == 0 || number == 1) return 1;
            return (1 + capacity(number/=2));
};
 
int main (int argc, char ** argv)
{
    unsigned char var = 4;
 
    cout << capacity(var) << endl;
 
    return 0;
}
Код компилируется, однако cout ничего не выводит.
Укажите мою ошибку, пожалуйста.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
17.10.2012, 05:41     Рекурсивная функция вычисления разрядности числа в двоичном виде #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;
 
unsigned char capacity (unsigned char number)
{
 
        if (number == 0 || number == 1) return 1;
            return (1 + capacity(number/=2));
}
 
int main (int argc, char ** argv)
{
    unsigned char var = 4;
 
    cout << (int)capacity(var) << endl;
 
    return 0;
}
ilikeMagic
11 / 11 / 2
Регистрация: 26.04.2012
Сообщений: 104
17.10.2012, 17:22  [ТС]     Рекурсивная функция вычисления разрядности числа в двоичном виде #3
А почему необходимо в явном виде преобразовывать тип функции при выводе?
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
17.10.2012, 17:27     Рекурсивная функция вычисления разрядности числа в двоичном виде #4
Цитата Сообщение от ilikeMagic Посмотреть сообщение
А почему необходимо в явном виде преобразовывать тип функции при выводе?
потому что там тип unsigned char, а ты его должен вывести как число
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
17.10.2012, 17:48     Рекурсивная функция вычисления разрядности числа в двоичном виде #5
C++
1
2
3
4
int Count(unsigned long a)
{
   return a < 2 ? 1 : 1 + Count(a >> 1);
}
ilikeMagic
11 / 11 / 2
Регистрация: 26.04.2012
Сообщений: 104
17.10.2012, 19:22  [ТС]     Рекурсивная функция вычисления разрядности числа в двоичном виде #6
Цитата Сообщение от panicwassano Посмотреть сообщение
потому что там тип unsigned char, а ты его должен вывести как число
А разве unsigned char это не число?
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
17.10.2012, 19:36     Рекурсивная функция вычисления разрядности числа в двоичном виде #7
нет это символ.
ilikeMagic
11 / 11 / 2
Регистрация: 26.04.2012
Сообщений: 104
17.10.2012, 20:28  [ТС]     Рекурсивная функция вычисления разрядности числа в двоичном виде #8
Цитата Сообщение от David Sylva Посмотреть сообщение
нет это символ.
Не обязательно unsigned char должен быть символом. При помощи unsigned char можно хранить значения в диапазоне от 0 до 255. Мой вопрос про вынужденное преобразование типа в cout остаётся открыт.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
17.10.2012, 20:37     Рекурсивная функция вычисления разрядности числа в двоичном виде #9
потому что он у тебя выведется как символ, а тебе нужен его целочисленный код
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
17.10.2012, 20:43     Рекурсивная функция вычисления разрядности числа в двоичном виде #10
Можно даже так
C++
1
cout << +capacity(var) << endl;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2012, 20:45     Рекурсивная функция вычисления разрядности числа в двоичном виде
Еще ссылки по теме:

C++ Рекурсивная функция для вычисления арифметической функции
C++ Рекурсивная функция для вычисления индекса максимального элемента массива
Вывод десятичного числа в двоичном виде C++

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

Или воспользуйтесь поиском по форуму:
ilikeMagic
11 / 11 / 2
Регистрация: 26.04.2012
Сообщений: 104
17.10.2012, 20:45  [ТС]     Рекурсивная функция вычисления разрядности числа в двоичном виде #11
Понял. Спасибо всем.
Yandex
Объявления
17.10.2012, 20:45     Рекурсивная функция вычисления разрядности числа в двоичном виде
Ответ Создать тему
Опции темы

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