Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ilikeMagic
11 / 11 / 2
Регистрация: 26.04.2012
Сообщений: 104
#1

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

17.10.2012, 02:41. Просмотров 855. Ответов 10
Метки нет (Все метки)

Есть неработающий код:

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 ничего не выводит.
Укажите мою ошибку, пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2012, 02:41
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Рекурсивная функция вычисления разрядности числа в двоичном виде (C++):

Рекурсивная функция для вычисления количества цифр натурального числа - C++
Нужно написать рекурсивную функцию для вычисления количества цифр натурального числа. Подскажите какой алгоритм нужен, для обычного...

Рекурсивная функция вычисления - C++
Привет , помоги пожалуйста написать программу рекурсивная функция вычисления: (x+N)(x+N-1)(x+N-2)...(x+1) на c++, Спасибо . ...

Рекурсивная функция вычисления выражения - C++
Помогите пожалуйста с задачкой по рекурсии Рекурсивная функция вычисления: \left(a*x+b \right)*\left(\left(a-1 \right)*x+b-1...

Рекурсивная функция вычисления факториала - C++
В коде #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;fact.h&quot; int main() { using namespace std; cout&lt;&lt;&quot;Enter the...

Рекурсивная функция вычисления факториала - C++
Напишите рекурсивную функцию int factorial(int n), которая считает факториал. примеры 1)5 120 2)0 1 3)2 2

Рекурсивная функция вычисления длины строки - C++
Помогите пожалуйста решить задачу по программированию. Напишите рекурсивную функцию вычисления длины строки. Заранее благодарен.

10
valeriikozlov
Эксперт С++
4680 / 2506 / 322
Регистрация: 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;
}
1
ilikeMagic
11 / 11 / 2
Регистрация: 26.04.2012
Сообщений: 104
17.10.2012, 17:22  [ТС] #3
А почему необходимо в явном виде преобразовывать тип функции при выводе?
0
panicwassano
594 / 562 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
17.10.2012, 17:27 #4
Цитата Сообщение от ilikeMagic Посмотреть сообщение
А почему необходимо в явном виде преобразовывать тип функции при выводе?
потому что там тип unsigned char, а ты его должен вывести как число
0
Thinker
Эксперт С++
4231 / 2205 / 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);
}
1
ilikeMagic
11 / 11 / 2
Регистрация: 26.04.2012
Сообщений: 104
17.10.2012, 19:22  [ТС] #6
Цитата Сообщение от panicwassano Посмотреть сообщение
потому что там тип unsigned char, а ты его должен вывести как число
А разве unsigned char это не число?
0
David Sylva
1292 / 954 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
17.10.2012, 19:36 #7
нет это символ.
0
ilikeMagic
11 / 11 / 2
Регистрация: 26.04.2012
Сообщений: 104
17.10.2012, 20:28  [ТС] #8
Цитата Сообщение от David Sylva Посмотреть сообщение
нет это символ.
Не обязательно unsigned char должен быть символом. При помощи unsigned char можно хранить значения в диапазоне от 0 до 255. Мой вопрос про вынужденное преобразование типа в cout остаётся открыт.
0
panicwassano
594 / 562 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
17.10.2012, 20:37 #9
потому что он у тебя выведется как символ, а тебе нужен его целочисленный код
1
diagon
Higher
1936 / 1202 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
17.10.2012, 20:43 #10
Можно даже так
C++
1
cout << +capacity(var) << endl;
1
ilikeMagic
11 / 11 / 2
Регистрация: 26.04.2012
Сообщений: 104
17.10.2012, 20:45  [ТС] #11
Понял. Спасибо всем.
0
17.10.2012, 20:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2012, 20:45
Привет! Вот еще темы с ответами:

Вывод десятичного числа в двоичном виде - C++
Собственно интересно как реализовать вывод десятичного числа в двоичном виде с помощью битовой маски, последовательно проверяя каждый бит и...

Рекурсивная функция для вычисления арифметической функции - C++
Доброго время суток. Требуется построить рекурсивную функцию, реализующую вычисление арифметической функции:X1 * X2. С одноместными...

Рекурсивная функция для вычисления по заданной формуле - C++
Напишите функцию, вычисляющую xn без использования цикла, где n – некоторое натуральное число, вводимое в качестве аргумента функции, а...

Рекурсивная функция вычисления суммы бесконечного ряда - C++
Всем привет) Объясните кто нибудь как это можно сделать?)


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru