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

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

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

Перевод двоичного числа в десятичное - C++

21.03.2014, 17:41. Просмотров 350. Ответов 5
Метки нет (Все метки)

Программа принимает введенное с клавиатуры двоичное число, например 1011, и выводит его десятичное представление, для 1011 - 11. Программа должна реализовываться с помощью рекурсивной функции. Ниже код. Проблема в следующем, она считает только первую цифру, то есть 1*8+0*4+1*2+1*1 = 11. Но на экран выводится только 8. Если в функции выводить результат каждого суммирования, то получается 11. Никак не могу понять в чем дело, извиняюсь за кривоватое описание проблемы.
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
#include <iostream>
using namespace std;
 
int sum = 0;
 
int BinToDec (string, int, int);
 
int main ()
{
  string number;
  cout<<"Enter number: ";
  cin>>number;
  int length = number.length();
  cout<<BinToDec (number, length, 0)<<endl;
  system ("pause");
  return 0;
}
 
int BinToDec (string bin, int exp, int pos)
{
  if (pos < bin.length() )
  {
          return sum += (bin[pos] - '0') << (exp - 1);
          BinToDec (bin, exp - 1, pos + 1);
  }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2014, 17:41     Перевод двоичного числа в десятичное
Посмотрите здесь:

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

Перевод числа из двоично-десятичного в десятичное - C++
Помогите! Нужна программа перевода числа из двоично-десятичного в десятичное

Перевод длинного двоичного числа в десятичную СС - C++
Как можно перевести число из двоичной системы счисления в десятичную ели число длиной в 100-300 знаков...

Перевод целого десятичного числа в строку и обратно в десятичное число - C++
перевод целого десятичного числа в строку и обратно в десятичное число, результат вывести в 3 столбика и 20 строк. заранее спасибо)

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

Разбор программы.Перевод двоичного числа в десятичн - C++
char bin // изображение двоичного числа, почему именно так и что такое bin? нигде не могу найти long int dec //десятичное число, что...

Перевод двоичного числа в шестнадцатеричную систему счисления - C++
дано целое число в двоичной системе счисление,т.е. последовательность чисел 0 и 1. Составить программу перевода этого числа в...

Перевод двоичного кода в текст - C++
Здравствуйте уважаемые форумчане, у меня было задание сделать шифратор/дешифратор текста, хотя в С++ не работал ^_^ У вас на форуме нашел...

Осуществить перевод из двоичного кода в десятичный - C++
Помогите пожалуйста. Нужно срочно решить несколько задач самым простейшим образом(без библиотек и функций) на уровне 1 курса =) Написать...

Перевод int в строку двоичного вида.Ошибка необработанное исключение - C++
Программа ругается на необработанное исключение. Подскажите как исправить.

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

Десятичное представление заданного числа - C++
Помогите написать код:


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
21.03.2014, 18:00     Перевод двоичного числа в десятичное #2
C++
1
2
3
4
5
6
7
8
int BinToDec (string bin, int exp, int pos)
{
  if (pos < bin.length() )
  {
          return sum += (bin[pos] - '0') << (exp - 1);
          BinToDec (bin, exp - 1, pos + 1); //это не выполняется, поскольку уже был ретурн
  }
}
jurok_85
238 / 221 / 76
Регистрация: 21.02.2013
Сообщений: 515
Завершенные тесты: 1
21.03.2014, 18:02     Перевод двоичного числа в десятичное #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
#include <iostream>
using namespace std;
 
int sum = 0;
 
int BinToDec (string, int, int);
 
int main ()
{
  string number;
  cout<<"Enter number: ";
  cin>>number;
  int length = number.length();
  cout<<BinToDec (number, length, 0)<<endl;
 
  return 0;
}
 
int BinToDec (string bin, int exp, int pos)
{
  if (pos < bin.length() )
  {
          sum += (bin[pos] - '0') << (exp - 1);
          BinToDec (bin, exp - 1, pos + 1);
  }
  return sum;
}
в 23 строчке проблема, функция возвращает sum и рекурсии не происходит
saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
21.03.2014, 18:05     Перевод двоичного числа в десятичное #4
может, не пересохранился?
ретурн, собственно, не больно нужен. Ведь используется глобальная переменная
jurok_85
238 / 221 / 76
Регистрация: 21.02.2013
Сообщений: 515
Завершенные тесты: 1
21.03.2014, 18:12     Перевод двоичного числа в десятичное #5
ну не совсем так. если бы у вас void функция была тогда не нужен, но тогда бы программу немного переделать надо было бы.
а так как у вас
C++
1
 int BinToDec (string, int, int);
а не
C++
1
void BinToDec (string, int, int);
то ретурн нужен
saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
21.03.2014, 18:14     Перевод двоичного числа в десятичное #6
извини, Юрок, с ТС перепутал. Не посмотрел на авторство. Думал это опять вопрос
Yandex
Объявления
21.03.2014, 18:14     Перевод двоичного числа в десятичное
Ответ Создать тему
Опции темы

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