C++
Napisz program, który będzie zamieniał liczby binarne na liczby dziesiętne, np. po wprowadzeniu przez użytkownika z klawiatury ciągu cyfr 100011 wypisze odpowiedź: 35. Program powinien używać wyłącznie typu całkowitego. Przyjmij, że użytkownik nie używa w zapisie zer nieznaczących oraz że liczba jest co najwyżej 8-bitowa.


Odpowiedź :

Odpowiedź:

#include <iostream>

#include <cmath>

using namespace std;

void hornerFast(string number, int valueX, int position);

int main()

{

   string number; // for allocation dirty number;

   int valueX = 2;

   cout << "Podaj liczbę: ";

   cin >> number;

   hornerFast(number, valueX, number.size() - 1);

}

inline void hornerFast(string number, int valueX, int position)

{

   int translatedNumber;

   register long result = 0;

   for(int i = 0; i < number.size(); i++)

   {

       char dirty = number[i];

       translatedNumber = dirty - '0';

       if(result == 0)

       {

           result = translatedNumber;

           continue;

       }

       result = result * valueX + translatedNumber;

   }

   cout << "Wynik -> " << result << endl;

}