C++ Dual in Dezimal umrechnen < Sonstige < Schule < Informatik < Vorhilfe
|
Aufgabe | 3. Erstellen Sie ein C++-Programm, das Dualzahlen in das Dezimalsystem umrechnen kann.
Zwei Tipps zur Lösung:
Die letzte Ziffer einer beliebigen Zahl erhalten Sie, wenn Sie die Zahl durch 10 dividieren und den Rest dieser Division ermitteln.
Die letzte Ziffer einer Zahl können Sie löschen, wenn Sie die Zahl durch 10 dividieren und nur das ganzzahlige Ergebnis berücksichtigen. |
Ich habe nun folgendes Programm in C++ geschrieben. Das Problem bei mir ist, dass wenn ich binäre Zahlen mit mehr als 10 Stellen eingebe, immer der Wert 2559 ausgegeben wird. Bei Eingabe einer Zahl mit 10 oder weniger Stellen funktioniert das Programm.
Wäre über Hilfe sehr dankbar!!
#include <iostream>
using namespace std;
int main()
{
long zahl;
int potenzzahl = 1, position = 0, ergebnis = 0;
// das Feld zum Speichern der Ziffern
int ziffer[16];
// das Feld wird mit 0 besetzt
for (int index = 0; index < 16; index++)
ziffer[index] = 0;
// Dualzahl eingeben
do {
cout << "Geben Sie die Dualzahl ein (max 16 bit): " << endl;
cin >> zahl;
} while (zahl > 1111111111111111);
do {
// die letzte Ziffer ablegen
ziffer[position] = zahl % 10;
//zur nächsten Position gehen
position++;
// durch 10 dividieren um die letzte Ziffer zu löschen
zahl = zahl / 10;
} while (zahl!=0);
for (int schleife = 0; schleife < 16; schleife++)
{ergebnis = ergebnis + ziffer[schleife] * potenzzahl;
potenzzahl = potenzzahl * 2;}
cout <<"Im Dezimalsystem hat die Zahl folgende Darstellung: "<< ergebnis << endl;
return 0;
}
|
|
|
|
Hallo!
Wenn dein LONG nur 4 byte groß ist, kann es maximal die Zahl 2.147.483.647 , also eine zehnstellige Zahl aufnehmen, und das ist zu wenig.
Versuch mal LONG LONG, das sollte 8 byte groß sein und bis 9223372036854775807 gehen. Das sollte erstmal reichen.
Mach doch mal ein
cout << sizeof(long)<<endl;
cout << sizeof(long long)<<endl;
dann siehst du es!
|
|
|
|