Dezimalzahl als Binärzahl darstellen



  • Ich habe versucht dafür ein Programm zu schreiben... das ist wohl in die Hose gegangen, ich erhalte als Binärzahl freundlicherweise anstatt dieser eine Hexadezimalzahl...

    Wißt ihr einen Rat?

    #include <iostream>
    using namespace std;
    
    int Anzahl_Ziffern_berechnen (int _Dezimalzahl);
    
    int main()
    {
    	int Hauptauswahl;
    
    	while (true)
    	{
    	    cout << "[1] Dezimalzahl als Binaerzahl ausdruecken" << endl;
    	    cout << "Eingabe: "; cin >> Hauptauswahl; cout << endl;
    
    	    switch (Hauptauswahl)
    	    {
    		    case(1):
    		    {
    			    cout << "Dezimalzahl eingeben: "; int Dezimalzahl; cin >> Dezimalzahl;
    
    			    int Anzahl_Ziffern = Anzahl_Ziffern_berechnen(Dezimalzahl);
    			    int Binaerzahl[Anzahl_Ziffern];
    
    			    for(int i = 0; i < Anzahl_Ziffern - 1; i++)
    			    {
    			    	Binaerzahl[i] = Dezimalzahl % 2;
    			    	Dezimalzahl = Dezimalzahl / 2;
    				}
    
    				cout << "Binaerzahl: " << Binaerzahl<< endl;
    
    		    } break;
    
    		    default: cout << "Falsche Eingabe!" << endl;
    	    }
    
    	    cout << endl;
        }
    }
    
    int Anzahl_Ziffern_berechnen (int _Dezimalzahl)
    {
        int anzahl_ziffern = 0;	
    
    	while (_Dezimalzahl != 0)
    	{
    		_Dezimalzahl = _Dezimalzahl / 2;
    		anzahl_ziffern++;
    	}
        return anzahl_ziffern;
    }
    


  • Das liegt daran, dass du ein int array ausgeben willst.
    std::cout kann aber keine int arrays ausgeben, wohl aber pointer auf int. Das Array zerfällt also zu einem Pointer auf int, der wird dann ausgegeben. Und Pointer werden ausgegeben, indem die gespeicherte Adresse ausgegeben wird.
    Du musst also jede Ziffer in dem Array einzeln ausgeben oder ein char array verwenden, was dann die Zeichen speichert.



  • Stimmt, ist mir auch aufgefallen. Ich hab's dementsprechend geändert. Leider verweigert mir das Programm nun schlicht die Ausgabe des Binärzahl. Alles andere jedoch wird ausgegeben.

    #include <iostream>
    using namespace std;
    
    int Anzahl_Ziffern_berechnen (int _Dezimalzahl);
    
    int main()
    {
    	int Hauptauswahl;
    
    	while (true)
    	{
    	    cout << "[1] Dezimalzahl als Binaerzahl ausdruecken" << endl;
    	    cout << "Eingabe: "; cin >> Hauptauswahl; cout << endl;
    
    	    switch (Hauptauswahl)
    	    {
    		    case(1):
    		    {
    			    cout << "Dezimalzahl eingeben: "; int Dezimalzahl; cin >> Dezimalzahl;
    
    			    int Anzahl_Ziffern = Anzahl_Ziffern_berechnen(Dezimalzahl);
    			    int Binaerzahl[Anzahl_Ziffern];
    
    			    for(int i = 0; i < Anzahl_Ziffern - 1; i++)
    			    {
    			    	Binaerzahl[i] = Dezimalzahl % 2;
    			    	Dezimalzahl = Dezimalzahl / 2;
    				}
    
    				cout << "Binaerzahl: ";
    				for(int i = 0; i < Anzahl_Ziffern - 1; i++)
    				{
    					cout << Binaerzahl[i];
    				}
    
    				cout << endl;
    
    		    } break;
    
    		    default: cout << "Falsche Eingabe!" << endl;
    	    }
    
    	    cout << endl;
        }
    }
    
    int Anzahl_Ziffern_berechnen (int _Dezimalzahl)
    {
        int anzahl_ziffern = 0;	
    
    	while (_Dezimalzahl != 0)
    	{
    		_Dezimalzahl = _Dezimalzahl / 2;
    		anzahl_ziffern++;
    		return anzahl_ziffern;
    	}
    }
    




  • Oh, gabs ja schon. Vielen Dank für den Hinweis 🙂


Anmelden zum Antworten