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

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

Войти
Регистрация
Восстановить пароль
 
Grex
1 / 1 / 0
Регистрация: 03.12.2008
Сообщений: 55
#1

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

20.12.2009, 13:16. Просмотров 961. Ответов 9
Метки нет (Все метки)

Написать рекурсивную функцию перевода двоичных цифр в эквивалентное десятичное число.
__________________________________________________ ________________________________
Сам алгоритм есть, а вот с рекурсией все никак не могу правильно сделать.
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2009, 13:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос рекурсивна функция перевода двоичных цифр в десятичное (C++):

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

Нужно написать программу перевода двоичных цифр в их шестнадцатиричный эквивалент (перевод числа оформить в виде функции) - C++
как написать эту программу в C++

Разработать алгоритм перевода двоичных чисел в десятичные числа - C++
разработать алгоритм перевода двоичных чисел в десятичные числа

Требуется двоично-десятичное число перевести в десятичное - C++
Помогите пожалуйста реализовать

Написать и протестировать функцию, которая преобразует строку шестнадцатеричных цифр в эквивалентное ей целое десятичное число - C++
Написать и протестировать функцию, которая преобразует строку шестнадцатеричных цифр в эквивалентное ей целое десятичное число. ПРОБЛЕМА В...

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

9
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
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 системы счисления), таким образо первая цыфра у нас с максимальным указателем позиции (т.к. это последний символ строки) если мы прошли всю строку мы просто прибавляем возможное значение, иначе прибавляем возможное значение в текущей позиции + в слудуюющей, вызовом функции для следующей позиции
1
Aye Aye
369 / 283 / 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;
}
2
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
20.12.2009, 14:34 #4
да, это не рекурсия, это простая функция

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

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

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

хорошо что разобрались
1
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
20.12.2009, 14:50 #8
я так думал пока незаметил последней строки)) там где ретурн))

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

Программа для перевода римских цифр С++ - C++
Написать программу для перевода римских цифр в арабские. тесты и результаты 1) CMXLVIII - 948 2) MCCLXIX -1269

Функция перевода из 10-ричной СС в 80-ричную СС - C++
Здравствуйте, как реализовать функцию перевода из 10-ричной СС, в 80-ричную СС ? подход перевода должен быть такой же как и к...

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

Функция перевода символа в цифру - C++
Здравствуйте! Хочу написать программу для перевода символа в цифру с помощью функции. int Func(char s) { if (s &gt;='0' &amp;&amp; s &lt;='9') return...


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

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

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