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

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

Войти
Регистрация
Восстановить пароль
 
Leon_AD
103 / 103 / 28
Регистрация: 11.04.2014
Сообщений: 160
#1

Рекурсивный перевод из двоичной системы счисления в десятичную - C++

11.04.2014, 13:42. Просмотров 936. Ответов 3
Метки нет (Все метки)

Вот мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <conio.h>
#include <math.h>
 
using namespace std;
int f(int Num)
{
    static int i(-1);
    int t(0);
    if(Num == 0)
        return 0;
    else
    {
        i++;
        cout << i << "===" << Num << "===" << (Num % 10)*exp(i*log((double)2)) << endl;
        t = (Num % 10)*exp(i*log((double)2)) + f(Num / 10);
    }
    return t;
}
 
void main()
{
    
    int Zahl;
    int p;
    cout << "Einschreiben die Zahl: ";
    cin >> Zahl;
    p = f(Zahl);
    cout << "-------- ";
    cout << p;
 
    
    _getch();
}
Вопрос: почему начиная с 1000(в двоичной) число в десятичной получается на единицу меньше, чем должно быть.
1
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2014, 13:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Рекурсивный перевод из двоичной системы счисления в десятичную (C++):

Написать рекурсивный алгоритм перевода из двоичной системы счисления в десятичную ( из восьмеричной и шестнадцатеричной в десятичную) - C++
Написать рекурсивный алгоритм перевода из двоичной системы счисления в десятичную ( из восьмеричной и шестнадцатеричной в десятичную). ...

Перевод из двоичной системы счисления в десятичную - C++
как создать код который переводит с двоичной системы в десятичную без использования DEC и прочего?

Перевод из двоичной системы счисления в десятичную - C++
Я создал программу, но вот она выдает размерность введенного массива, вместо десятичного числа. Ошибки я найти не могу. Вот сам код: ...

Перевод из двоичной системы счисления в десятичную - C++
Помогите пожалуйста перевести число из 2-ой сс в 10 сс. Буду очень благодарен:)

Перевод из двоичной системы счисления в десятичную - C++
Программа не работает для отрицательных чисел. Помогите найти ошибку. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;time.h&gt; ...

Перевод числа из двоичной системы счисления в десятичную - C++
написать программу, которая переводит число из двоичной системы счисления в десятичную

3
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24115 / 16096 / 4896
Регистрация: 22.10.2011
Сообщений: 28,538
Записей в блоге: 5
11.04.2014, 14:08 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Встречный вопрос: почему не так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int f(int Num)
{
    static int i(-1);
    int t(0);
    if(Num == 0)
        return 0;
    else
    {
        i++;
        cout << i << "===" << Num << "===" << (Num % 10)*(1<<i) << endl;
        t = (Num % 10)*(1 << i) + f(Num / 10);
    }
    return t;
}
, а с использованием exp/log для вычисления степени двойки?
1
Leon_AD
103 / 103 / 28
Регистрация: 11.04.2014
Сообщений: 160
11.04.2014, 16:11  [ТС] #3
Спасибо, так все работает. Но вопрос остался: почему не работает мой вариант. И как это понять : (1 << i) ?

Добавлено через 18 минут
Это получается единица побитово сдвинется влево на i позиций? Т.е. при i = 0 - 1(2) или 1(10); при i = 1 - 10(2) или 2(10)?
0
Leon_AD
103 / 103 / 28
Регистрация: 11.04.2014
Сообщений: 160
15.03.2015, 20:48  [ТС] #4
Возможно кому-то пригодится. Вот готовый код рекурсивного перевода из двоичной системы в десятичную:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
 
using namespace std;
int f(int Num)
{
    static int i(-1);
    int t(0);
    if(Num == 0)
        return 0;
    else
    {
        i++;
        cout << i << "===" << Num << "===" << (Num % 10)*(1<<i) << endl;
        t = (Num % 10)*(1 << i) + f(Num / 10);
    }
    return t;
}
 
void main()
{   
    int num;
    int p;
    cout << "Enter number: ";
    cin >> num;
    p = f(num);
    cout << "-------- ";
    cout << p << endl;
   
    system("pause");
}
0
15.03.2015, 20:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2015, 20:48
Привет! Вот еще темы с ответами:

Перевод вещественных чисел из двоичной системы счисления в десятичную - C++
Перевод вещественных чисел из двоичной системы счисления в десятичную По такой схеме

Перевод из двоичной системы счисления в десятичную с плавающей запятой - C++
Помогите найти ошибки в коде. Выводит не верный результат при введенных данных (11.1 или 11.01 или 11.001 и тд) неверность заключается в...

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

Перевод целого (дробного) числа из двоичной системы счисления в десятичную - C++
Здравствуйте. Написали программу в С++, но считает не все значения. помогите найти ошибку. #include &lt;stdio.h&gt; #include &lt;math.h&gt; ...


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

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

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