Задание к уроку "Фундаментальные типы данных"

Условие

Требуется написать программу, которая будет переводить число из двоичной системы счисления в десятичную.

Пример вызова готовой программы

% ./bin2dec
Введите число: 101
Десятичное представление: 5
%

Входные данные

На вход программа получает число, записанное в двоичной системе счисления без пробелов.

Число строго положительное и не превосходит \(\text{2 000 000 000}_{10} \).

Выходные данные

Введённое число в десятичной системе счисления

Ограничения на выполнение

Необходимо разработать функцию to_bin, возвращающую тип std::string.

Эту функцию потом нужно будет вызвать в main для вывода ответа.

Например, так:

std::cout << "Десятичное представление: " << to_bin(number) << std::endl;

Пользоваться сторонними библиотеками, std::bitset и прочими хитростями, конечно же, запрещено.

Справка

Необходимые операции над строками, нужные для выполнения:

  1. Добавление символа (или символов) в конец строки:
std::string name = "Ivan";
name += " Ivanov";
  1. Обращение к конкретному символу строки (массива):
std::string name = "Vladimir";
std::cout << name[0] << name[2] << name[5] << std::endl; // Vam
  1. Получение размера строки:
std::string name = "Maxim";
std::cout << name.length() << std::endl; // 5

Непосредственно алгоритм перевода числа из двочной системы счисления в десятичную, если будут затруднения, можно легко нагуглить.

При стандартном подходе в конце работы функции to_bin необходимо будет перевернуть строку. Предполагается, что этот алгоритм ты сможешь написать сам - но, в любом случае, при затруднениях идею можно тоже очень легко нагуглить.

Но если ты и будешь какие-то алгоритмы подсматривать в интернете - очень важно, чтобы ты не просто копировал код: ты должен посмотреть и запомнить саму идею, основной принцип работы алгоритма, и потом из памяти перенести его в свой код.

Дополнительные задания

Если ты справишься с основным заданием, и захочешь что-то сделать сверх него, предлагаю следующие задачи:

  1. Добавить проверку корректности введённого бинарного числа: по символам и по размеру.
  2. Добавить поддержку ввода бинарного числа с пробелами (см. функцию getline).
  3. Добавь поддержку отрицательных чисел. При таком подходе первый бит числа будет отвечать за знак (т.е. формат ввода не меняется). В ответе выводе число с - или + в начале. Так же проверяй входные числа на минимальный размер (2 символа).