Próbuję napisać program, który zamieni liczbę podaną na wejściu na liczbę dwójkową. Kod wydaje mi się realizować dobry tok myślenia, jednak wynik jest niepoprawny. Z programowaniem w C++ mam do czynienia od niedawna, wcześniej zajmowałem się teorią, czyli algorytmami i ich realizacją w Turbo Pascalu, proszę więc o wyrozumiałość.
Kod źródłowy programu:
Kod: Zaznacz cały
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n=0;
int liczba, wynik;
int l, bin=0, x, r;
cout << "Wpisz liczbe " << endl;
cin >> liczba;
x=1;
for (; liczba>0; n++)
{
r=liczba%2; // 19mod2=1 | 9mod2=1 | 4mod2=0 | 2mod2=0 | 1mod2=1
liczba=liczba-r; // 19-1=18 | 9-1=8 | 4-0=4 | 2-0=2 | 1-1=0
wynik=liczba/2; // 18/2=9 | 8/2=4 | 4/2=2 | 2/2=1 | 0
liczba=wynik; // liczba=9 | liczba=4 | liczba=2 | liczba=1 | liczba=0
l=n; // 0 | 1 | 2 | 3 | 4
for (; l>0; l--)
{
x=x*10; // 1 | 10 | 100 | 1000 | 10000
}
bin=bin+r*x; // bin=1+10+0+0+10000=10011
}
cout << "W zapisie binarnym ma ona wartosc " << bin;
cin.ignore();
getchar();
return(0);
}