Использовать функцию ввода двоичного вектора

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Ты понимаешь, как работает функция vvod? Она делает перевод из строки в число. Пробегает по символам строки и переводит их в биты. Нужно написать функцию, которая будет делать обратное преобразование, тоже побитовое.

Вот идея алгоритма. Доведи его до ума сам. Сделай отдельной функцией, передай параметры и вызови функцию для каждого числа.

Код: Выделить всё

#include <string>
#include <iostream>

int main()
{
   const unsgined int n = 375;

   std::string str;
   unsigned int rest = n;
   while (rest)
   {
      str = std::string( (rest & 1) ? "1" : "0") + str;
      rest >>= 1;
   }

   if (str.empty())
   {
      str = "0";
   }

   std::cout << str;

   return 0;
}
Подчёркиваю, это лишь идея алгоритма. Дабы сэкономить время, коего у меня не так много, я написал самый простой с точки зрения самого кодинга вариант, но отнюдь не самый быстрый с точки зрения его работы. Его значительно можно ускорить при желании, но это потребует большего количества кода и чуть больше времени на "подумать". Расценивай код именно как демонстрацию алгоритма, а не как готовое решение. Разберись, как он работает, и тогда сможешь написать сам даже лучше.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить