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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Цикл асм и с++ http://www.cyberforum.ru/cpp-beginners/thread76974.html
Возможно ли использовать цикл с асамблера на с++.? Если да то наведите пример..(вывод сообщения 10 раз)
C++ Работа с текстовыми файлами неизвестног размера Поискал на форуме, но не нашел. Вопрос таков, как считать с строку char* текст из файла. Находил примеры, которые работают через потоки - получалось считывать построчно, но длина считываемой строки была ограничена. Есть ли работающий вариант. В гугле искал, находил примеры, которые компилились, но в ходе считывания возниакло исключение acces violation. http://www.cyberforum.ru/cpp-beginners/thread76970.html
C++ Сортировка!
Задание: Информация о сотрудниках предприятия содержит: - Ф.И.О.; - номер отдела; - должность; - дату начала работы. Вывести список сотрудников по отделам в порядке убывания стажа. Программа:
C++ Скалярное произведение.
Добрый лень, нужна помощь в реализации программы, вычисляющая скалярное произведение 2-х векторов используя рекурсию на языке Си. Заранее спасибо.
C++ Массив по C++ http://www.cyberforum.ru/cpp-beginners/thread76962.html
В одномерном массиве, состоящем из n вещественных элементов, вычислить: сумму элементов массива с нечетными номерами; записать элементы массива в файл.
C++ Передача массивов в качесте параметров Будьте добры, помогите с задачей: вычислить произведения элементов, расположенных между первым и последним нулевыми элементами в каждой строке. Добавлено через 3 минуты задача по С++ Добавлено через 1 час 1 минуту неужели никто не может мне помочь? подробнее

Показать сообщение отдельно
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
20.12.2009, 13:33     рекурсивна функция перевода двоичных цифр в десятичное
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 системы счисления), таким образо первая цыфра у нас с максимальным указателем позиции (т.к. это последний символ строки) если мы прошли всю строку мы просто прибавляем возможное значение, иначе прибавляем возможное значение в текущей позиции + в слудуюющей, вызовом функции для следующей позиции
 
Текущее время: 14:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru