Задание к уроку "Фундаментальные типы данных"
Условие
Требуется написать программу, которая будет переводить число из двоичной системы счисления в десятичную.
Пример вызова готовой программы
% ./bin2dec
Введите число: 101
Десятичное представление: 5
%
Входные данные
На вход программа получает число, записанное в двоичной системе счисления без пробелов.
Число строго положительное и не превосходит \(\text{2 000 000 000}_{10} \).
Выходные данные
Введённое число в десятичной системе счисления
Ограничения на выполнение
Необходимо разработать функцию to_bin
, возвращающую тип std::string
.
Эту функцию потом нужно будет вызвать в main
для вывода ответа.
Например, так:
std::cout << "Десятичное представление: " << to_bin(number) << std::endl;
Пользоваться сторонними библиотеками, std::bitset
и прочими хитростями, конечно же, запрещено.
Справка
Необходимые операции над строками, нужные для выполнения:
- Добавление символа (или символов) в конец строки:
std::string name = "Ivan";
name += " Ivanov";
- Обращение к конкретному символу строки (массива):
std::string name = "Vladimir";
std::cout << name[0] << name[2] << name[5] << std::endl; // Vam
- Получение размера строки:
std::string name = "Maxim";
std::cout << name.length() << std::endl; // 5
Непосредственно алгоритм перевода числа из двочной системы счисления в десятичную, если будут затруднения, можно легко нагуглить.
При стандартном подходе в конце работы функции to_bin
необходимо будет перевернуть строку. Предполагается, что этот алгоритм ты сможешь написать сам - но, в любом случае, при затруднениях идею можно тоже очень легко нагуглить.
Но если ты и будешь какие-то алгоритмы подсматривать в интернете - очень важно, чтобы ты не просто копировал код: ты должен посмотреть и запомнить саму идею, основной принцип работы алгоритма, и потом из памяти перенести его в свой код.
Дополнительные задания
Если ты справишься с основным заданием, и захочешь что-то сделать сверх него, предлагаю следующие задачи:
- Добавить проверку корректности введённого бинарного числа: по символам и по размеру.
- Добавить поддержку ввода бинарного числа с пробелами (см. функцию
getline
). - Добавь поддержку отрицательных чисел. При таком подходе первый бит числа будет отвечать за знак (т.е. формат ввода не меняется). В ответе выводе число с
-
или+
в начале. Так же проверяй входные числа на минимальный размер (2 символа).