Ich habe ein zum Umrechnen von Dezimalzahlen in Dualzahlen geschrieben. Bis jetzt soll es mit allen geraden Zahlen die größer als 0 funktionieren. Klappt soweit auch, allerdings scheint es nur mit den Zweierpotenzen zu funktionieren. Außerdem funktionieren noch alle Zahlen von 1 - 8. Ich saß jetzt schon über eine Stunde an dem Programm um den Fehler zu finden, jedoch vergebens. Ich hoffe ihr könnte mir helfen.
Code:
#include <iostream>
#include <conio.h> //Zum offenhalten des Konsolenfensters
#include <cmath>
#include <cstring>
using namespace std;
long double dez, dez2;//dez: Eingabe der Dezimalzahl, dez2: Dezimalzahl, mit der gerechnet wird
bool killzero;//Variable zur Beseitigung der Nullen vor der eigentlichen Zahl
long double ex, i; //ex: Exponent der Zweierpotenzen, i: Laufvariable
string dua; //Letztendliche Binärzahl
int end=0; //Wird benutzt um das Programm in eine Endlosschleife zu stecken
int zero()
{
for (i=ex; i >= 0; i=i-1)
dua = dua + '0';
}
int main()
{
cout << "Umwandeln von Dezimalzahlen in Dualzahlen" << endl
<< "© 2006 Oliver Sabiniarz" << endl
<< "Geben Sie eine Dezimalzahl ein: ";
cin >> dez;
killzero=1;
dez2=0;
ex = 61;
dua="";
while (ex >=-60)
{
ex=ex-1;
if (dez2+pow(2,ex) == dez)
{
dua = dua + '1';
ex=ex-1;
zero();
goto output;
}
else if (dez2+pow(2,ex) < dez)
{
killzero=0;
dua = dua + '1';
dez2 = dez2 + pow(2,ex);
}
else if (dez2+pow(2,ex) > dez)
{
if (killzero=0)
dua = dua + '0';
}
}
output: cout << dua;
getch();
}