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...


Anmelden zum Antworten