Problem Binärzahl in Dezimalzahl
-
Hallo, ich habe ein Problem:
Folgende Aufgabe:
______________________________________________________________________
Schreiben sie ein c++ Programm, das eine Binärziffernfolge einliest (nur Betrag, kein vorzeichen) und den dezimalen Wert ausgibt. Lesen sie die Zeichen in eine "char"-variable ein. Verwenden sie hierzu cin.get(Variable), wobei Variable das char Zeichen ist. Zb so:while(cin.get(c) && (c =='0' || c=='1'))
{...}gehen Sie zur Berechnung von der Potenzreihendarstellung aus.
Tipp für Berechnung: Bsp. 1101
1. Schleifendurchlauf 1 1-->ze1
2. Schleifendurchlauf 1 (ze1)*2+1 -->z2
3. Schleifendurchlauf 0 (ze2)*2+0 -->z3
4. Schleifendurchlauf 1 (ze3)*2+1 -->z4
_______________________________________________________________________Bin absoluter Anfänger. Habe das ganze versucht aber bekomme nie das richtige Ergebnis, finde aber den/die fehler nicht. BITTE HELFEN !!!
mein Programm:
#include <iostream> using namespace std; int main() { //Variablendeklarirung char c; //c ist die eingelesene Binärziffer der aktuellen Stelle int ze=0; //Zwischenergebnis in Dezimalberechnung int ziffer; //Zähler für Anzahl der Binärziffern ziffer=1; while(cin.get(c) && ( c=='0' || c=='1')) //Prüfschleife für Binärzahlzeichen { cin.get(c); //einlesen der einzelnen Ziffern je Schleifendurchgang if (ziffer=1) //Prüfschleife ob erste Ziffer oder nicht { if (c=='1') //setzt ze für erste ziffer {ze=ze+1;} else if(c=='0') {ze=ze+0;} } else if(ziffer>1) { if(c=='1') {ze=(ze*2)+1;} //berechnet ze für Folgeziffern else if(c=='0') {ze=(ze*2)+0;} } ziffer++; } cout << "Ihre Binaerzahl hat den dezimalen Betragswert von: " << ze << endl; return 0; }
-
Manchmal denkt man zu kompliziert....
bin gerade drauf gekommen.
Lösung:
#include <iostream> using namespace std; main () { // Variablendefinition char c; int ze = 0; // Binärzahleingabe und Umrechnen in Dezimalzahl while (cin.get(c) && ( c == '0' || c == '1' )) { ze = ze * 2; if (c == '1') ze = ze + 1; } // Ausgabe der Dezimalzahl cout << "Die eingegebene Binärzahl lautet im Dezimalsystem: " << ze << endl; }Vielleicht hilfts ja mal wem anders...