Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
105 / 105 / 51
Регистрация: 11.04.2014
Сообщений: 160
1

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

11.04.2014, 13:42. Показов 3104. Ответов 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2014, 13:42
Ответы с готовыми решениями:

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

Перевод из двоичной системы счисления в десятичную
Как перевести число из двоичной системы счисления в десятичную?

Перевод из двоичной системы счисления в десятичную
Почему самописная функция long long int From2to10(string s) { long long int r = 0; int i, j...

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

3
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31193 / 20390 / 7941
Регистрация: 22.10.2011
Сообщений: 35,362
Записей в блоге: 6
11.04.2014, 14:08 2
Лучший ответ Сообщение было отмечено volvo как решение

Решение

Встречный вопрос: почему не так:
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
105 / 105 / 51
Регистрация: 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
105 / 105 / 51
Регистрация: 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2015, 20:48

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

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

Перевод из двоичной системы счисления в десятичную
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;cstring&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt;...

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


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

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

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