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

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

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

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

21.03.2014, 17:41. Просмотров 453. Ответов 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);
  }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2014, 17:41
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Перевод двоичного числа в десятичное (C++):

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

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

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

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

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

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

5
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); //это не выполняется, поскольку уже был ретурн
  }
}
1
jurok_85
253 / 237 / 84
Регистрация: 21.02.2013
Сообщений: 563
Завершенные тесты: 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 и рекурсии не происходит
1
saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
21.03.2014, 18:05 #4
может, не пересохранился?
ретурн, собственно, не больно нужен. Ведь используется глобальная переменная
0
jurok_85
253 / 237 / 84
Регистрация: 21.02.2013
Сообщений: 563
Завершенные тесты: 1
21.03.2014, 18:12 #5
ну не совсем так. если бы у вас void функция была тогда не нужен, но тогда бы программу немного переделать надо было бы.
а так как у вас
C++
1
 int BinToDec (string, int, int);
а не
C++
1
void BinToDec (string, int, int);
то ретурн нужен
0
saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
21.03.2014, 18:14 #6
извини, Юрок, с ТС перепутал. Не посмотрел на авторство. Думал это опять вопрос
0
21.03.2014, 18:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2014, 18:14
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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