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 sindGib 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 SchleifeZiffer=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. :pVielen 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!!