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

рекурсивна функция перевода двоичных цифр в десятичное - C++

Войти
Регистрация
Восстановить пароль
 
Grex
1 / 1 / 0
Регистрация: 03.12.2008
Сообщений: 55
20.12.2009, 13:16     рекурсивна функция перевода двоичных цифр в десятичное #1
Написать рекурсивную функцию перевода двоичных цифр в эквивалентное десятичное число.
__________________________________________________ ________________________________
Сам алгоритм есть, а вот с рекурсией все никак не могу правильно сделать.
P.s. по возможности объясните алгоритм самой рекурсии в данной задаче. Спасибо.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <vcl.h>
#include <stdio.h>
#include <conio.h>
int main () {
        char c;
        int res=0;
        printf("Vvedite 4uslo v dvoichnou sisteme: ");
        while(scanf("%c",&c) ) {
                if( (c<'0') || (c > '1') ) break;
                res<<=1;
                res+=c-'0';
        };
        printf("\n4uslo v des9tichnou sisteme: %d",res);
        getch();
        return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2009, 13:16     рекурсивна функция перевода двоичных цифр в десятичное
Посмотрите здесь:

C++ Нужно написать программу перевода двоичных цифр в их шестнадцатиричный эквивалент (перевод числа оформить в виде функции)
C++ Разработать алгоритм перевода двоичных чисел в десятичные числа
Программа для перевода римских цифр С++ C++
C++ Написать и протестировать функцию, которая преобразует строку шестнадцатеричных цифр в эквивалентное ей целое десятичное число
C++ Функция перевода символа в цифру
Функция перевода из 10-ричной СС в 80-ричную СС C++
Функция перевода из десятичной в двоичную систему C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
20.12.2009, 13:33     рекурсивна функция перевода двоичных цифр в десятичное #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
 
using namespace std;
 
int R(string s, int base, int pos){    return (!pos) ? ( (s[pos]-'0') * base) : ( (s[pos]-'0') * base + R(s,base*2,pos-1) );    }
 
int main()
{
    string s;
    cin >> s;
    cout << (R(s,1,s.size()-1)) << endl;
    system("pause");
    return 0;
}
Добавлено через 5 минут
мы рассматриваем наше число как строку, первый символ берем с конца, ясно что он может прибавить к нашему значению максимум 2^base, base - это степень двойки (вспоминайте перевд с 10 в 2 системы счисления), таким образо первая цыфра у нас с максимальным указателем позиции (т.к. это последний символ строки) если мы прошли всю строку мы просто прибавляем возможное значение, иначе прибавляем возможное значение в текущей позиции + в слудуюющей, вызовом функции для следующей позиции
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
20.12.2009, 13:57     рекурсивна функция перевода двоичных цифр в десятичное #3
фиг знет, прога работат. но это не настоящая ркурсия помоему, скорее рекурсивная итерация.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <iostream>
#include <conio.h>
using namespace std;
 
int dec(int d)
{
    char c;
    cin.get(c);
    if (c=='\n')return d;
    d*=2; d+=c-'0';
    return dec(d);
}
 
int main()
{
    int x=dec(0);
    cout << x;
    getch();
    return 0;
}
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
20.12.2009, 14:34     рекурсивна функция перевода двоичных цифр в десятичное #4
да, это не рекурсия, это простая функция

Добавлено через 24 секунды
и та не та что надо..
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
20.12.2009, 14:37     рекурсивна функция перевода двоичных цифр в десятичное #5
простая функция? она непосредственно (не посредствам другрй функции, хотя это тоже рекурсия) вызывает сама себя - по определению это рекурсия. я имел в виду, что есть рекурсивные функции где вычисления содержатся и после входа в рекурсию, а есть (как я написал), где вычисления только до входа в рекурсию. так вот некоторым людям важно, что бы рекурсивные функции были первого типа.

и она делает то что нужно, и соответствет алгоритму который привел Grex , тестируй внимательней.
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
20.12.2009, 14:44     рекурсивна функция перевода двоичных цифр в десятичное #6
это не рекурсия, или ты хочешь сказать что http://codepad.org/uYksI0Ai это тоже рекурсия?

Добавлено через 3 минуты
слыш, я провтыкал у тебя последнюю строку..
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
20.12.2009, 14:45     рекурсивна функция перевода двоичных цифр в десятичное #7
нет, это конено же не рекурсиваня процидура, она не содержит вызовов самой себя.
извени помойму мы не поняли друг дгура, я думал что ты говоришь, что моя функция во переводу числа не рекурсивна.

хорошо что разобрались
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
20.12.2009, 14:50     рекурсивна функция перевода двоичных цифр в десятичное #8
я так думал пока незаметил последней строки)) там где ретурн))

Добавлено через 44 секунды
не у тебя рекурсия все ок..
Grex
1 / 1 / 0
Регистрация: 03.12.2008
Сообщений: 55
21.12.2009, 00:21  [ТС]     рекурсивна функция перевода двоичных цифр в десятичное #9
Спасиб парни. Просто нужно время что бы нормально разбираться. Е раз Гратц )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2013, 21:21     рекурсивна функция перевода двоичных цифр в десятичное
Еще ссылки по теме:

Написать и протестировать функцию , которая преобразует строку двоичных цифр в эквивалентное ей целое число C++
Функция перевода систем счисления C++
Функция преобразующая строку двоичных цифр в целое десятичное число C++
Функция перевода из Float в Hex C++
Требуется двоично-десятичное число перевести в десятичное C++

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

Или воспользуйтесь поиском по форуму:
intel_6
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 3
23.12.2013, 21:21     рекурсивна функция перевода двоичных цифр в десятичное #10
вввввввв
Yandex
Объявления
23.12.2013, 21:21     рекурсивна функция перевода двоичных цифр в десятичное
Ответ Создать тему
Опции темы

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