Witam! Jestem początkujący w C++ i w ramach jakichś ćwiczeń postanowiłem wykonać przelicznik systemów liczbowych. Nie chcę tutaj dostać gotowych rozwiązań, tylko pomocy w rozwiązaniu pewnego problemu w moim kodzie. Podejrzewam, iż nie jest on najczystszy, ale starałem się jak mogłem.
(dodam iż funkcja "oct_to_dec(string lo)" działa jak najbardziej prawidłowo)
//Przeliczanie oktalnej na binarną przez dziesiętną
long long oct_to_bin(string lo)
{
long long ld; //"liczba dziesiętna"
ld=oct_to_dec(lo); //przeliczenie liczby oktalnej na dziesiętną
long long lb=0; //"liczba binarna"
short cyfbin=0; //"cyfra w binarnym zapisie"
int i=0; //iterator do pętli poniżej
while(ld>0)
{
cout << i <<" "<< ld <<" "<< cyfbin <<" "<< lb <<" "<< pow(10,i) << endl;
// ^wypisanie wartości zmiennych do testów^
cyfbin=ld%2; //wyzn. reszty z dzielenia liczby dziesiętnej przez 2
ld=ld/2; //podzielenie lizcby dziesiętnej przez 2
lb+=cyfbin*pow(10,i); //"przemiana" liczby binarnej do int'a
i++; //zwiększenie iteratora do potęgowania liczby 10
}
return lb;
}
A problem wygląda następująco, kiedy przeliczam liczbę (załóżmy 117, której wartość binarna jest równa: 1001111) wynik jest nieprawidłowy. Pierwsze powtórzenie pętli zdaje się nie wykonywać poprawnie:
Jeśli ktoś wie, w czym tkwi problem bardzo prosiłbym o pomoc ;)
Z góry dziękuje!
~tagis