Dualzahlen in Dezimalzahlen programmieren



  • Hallo zusammen,

    da ich heute zum ersten Mal in einem Chatroom bin, bitte ich um Nachsicht falls ich einige Formfehler oder sonstige Fehler machen sollte. Natürlich versuche ich mich an die Thematik wie im Beitrag " Brauchst Du Hilfe" zu halten.

    Kurz zu mir . Ich versuche nun schon seit einiger Zeit mich am programmieren.
    Einiges klappt aber hier bin ich mit meinem Latein am meine Grenzen angelangt.

    Ich möchte Dualzahlen in Dezimalzahlen umwandeln. Hier ein Codeausschnitt mit Umgangssprachlicher Vorbereitung von mir zusammengestellt 🙂 :

    // Umgangssprachliche Programmierung Dual in Dezimal
    /* Lese Zahl ein 5
    wandle Zahl in Ziffer um (Zahl%10) 101
    Speichere Ziffer in Variable Ziffer
    Lade Ziffer und multipliziere mit Index
    Lösche die Ziffer Ziffer/10
    Speichere das Ergebnis
    Lade Ergebnis = Ergebnis und addiere den Index hinzu.
    Wiederhole bis alle Ziffern durchlaufen sind

    Gib ergebnis der Wiederholung aus

    Ende

    // Vereinbarung von Variablen

    int Zahl,Ziffer,Ergebnis;
    int position=0;
    int Stellenwerte[15];

    // Das Feld wird mit 0 besetzt , damit wird sichergestellt das keine zufälligen Werte gesetzt werden
    for(int index=0;index<16;index++)
    Stellenwerte[index]=0;
    // Do Schleife zum einlesen der Werte
    do{

    // 1 Schritt Ausgabe mit Anweisung
    cout<<" Bitte geben Sie ein gewuenschte Zahl ein!"<<endl;

    // Eingabe der Zahl
    cin>>Zahl;

    }while(Zahl>65535);
    // Die Schleife

    Ziffer=Zahl%2;

    do {

    // Hier will ich eine Einschränkung wenn Ziffer 1 dann soll Ergebnis * Stellenwert bearbeitet werden sonst nächster Stellenwert
    if(Ziffer==1)
    {

    // Berechnung von Bspl. Eingabe 1 * Stellenwert+Eingabe etc.
    Ergebnis=Ergebnis+Ziffer*Stellenwerte[16];

    // Durchlaufene Ziffer löschen
    Ziffer/10;
    // nächste Postion im Index anspringen
    position++;

    cout<<"Ergebnis der Berechnung"<<Ergebnis<<endl;

    }
    else(Ziffer==0);
    {
    position++;
    }
    }while(Ziffer==0);

    }
    break;
    return 0;
    }}

    So hoffe es ist nicht zu viel... leider erhalte ich hier immer eine Endlosschleife ... vermute mal weil sich die Variable nicht ändert.. sehe leider nicht durch wo.

    Könnt Ihr mir Tipps geben wie Ihr so Quelltexte erstellt und mir Erläutern wie ich 1. Auf den 1. Stellenwert komme
    2. Ich würde gerne mit meiner Eingabe mal Stellenwert... und Ergebnis Bspl: 101 = 3 rausbekommen .
    Von der Logik her muss doch nur 1*Stellenwert[2]+0*Stellenwert[1]+1*Stellenwert[0] sein. :p

    Vielen Dank jetzt schon mal...

    Viele Grüße

    CT.



  • ProgCt schrieb:

    Ich möchte Dualzahlen in Dezimalzahlen umwandeln. Hier ein Codeausschnitt mit Umgangssprachlicher Vorbereitung von mir

    Auf deutsch: meine Hausaufgabe lautet...

    Was macht das?

    Ziffer/10;
    

    Und das?

    else(Ziffer==0);
    


  • Die vermutlich einfachste Lösung wäre, std::bitset zu verwenden.

    std::bitset<32> bs(string);
    

    Der String muss dabei aus 0-en und 1-en bestehen. Ansonsten funktioniert das auch mit long int im oktalen, dezimalen oder hexadezimalen System.

    Natürlich kannst du das auch selbst umrechnen, aber schneller geht es vermutlich so. 😉



  • ProgCt schrieb:

    da ich heute zum ersten Mal in einem Chatroom bin, ...

    F*ck!!! Ich BIN alt!! 😮


Anmelden zum Antworten