Witam. Mam problem z moim programem do zamieniania liczb dziesiętnych na binarne. Kod, który można zobaczyć poniżej jest oczywiście ze 2-3 razy dłuższy od standardowych rozwiązań dostępnych w internecie, ale chciałem spróbować trochę z innej strony.
Generalnie wszystko działa jednak poprawnie są zamieniane liczby tylko z zakresu 0-1024 + kolejne potęgi dwójki.
Wpisanie już chociażby 1025 powoduje wyświetlanie się głupot jak np. trójki czy siódemki w zapisie binarnym...
Byłbym bardzo wdzięczny za jakąkolwiek uwagę, wskazówkę czy sugestię.
#include <iostream>
#include <conio.h>
#include <string>
#include <cstdlib>
using namespace std;
int main()
{
int a;
string bin;
cout << "==Program zamienia liczby dziesietne na binarne==\n\n";
cout << "Podaj liczbe w formacie dziesietnym: ";
cin >> a;
int dx;
dx = a;
if (a==0)
{
cout << "\nTwoja liczba w postaci binarnej: 0";
}
else
{
while(a>0)
{
if (a%2==0)
{
bin+="0";
a=a/2;
}
else
{
bin+="1";
a=a/2;
}
}
int cyfra;
int b=atoi(bin.c_str());
cout << "\nTwoja liczba w postaci binarnej: ";
int g;
g = b;
if(g)
{
while(g)
{
cyfra=g%10;
cout << cyfra;
g=g/10;
}
}
if (dx%2==0)
{
while(dx%2==0)
{
cout << "0";
dx=dx/2;
}
}
}
getch();
}