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ź:
#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;
}