Umwandlungsrechner
-
Ich brauche hilfe mit meinem Code(muss den heute nacht fertig bekommen , er soll am Ende :
Von Dezimal zu Hexadezimal
Von Dezimal zu Binaer
Von Hexadezimal zu Dezimal
Von Hexadezimal zu Binaer
Von Binaer zu Hexadezimal
Von Binaer zu DezimalMein Hauptproblem ist aber das Fehler auftauchen die ich nicht beheben kann , da ich sehr neu zu c++/Programmieren insgesamt bin.
!Derzeitiges Problem!
Das Ergebniss wird nicht richtig Umgerechnet#include <iostream> #include <cstdlib> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std; int main(int argc, char** argv) { int i=0, s=0, laenge; //i und s für das Array int dezWerte=0; //um Falsche Ausgaben zu verhindern string HexEingabe; int HexArray[4]; //[4] für die 4 Eingaben/Zeichen int HexVorgabe [4] ={1, 16, 256, 4096}; // 16 hoch 0-3 Ergebnisse cout <<"Hex in Dez - Umrechnung" <<endl; cout <<"Geben Sie Ihre Hexadezimalzahl ein\n"; cin >> HexEingabe; laenge = HexEingabe.length(); //Analyse der Länge für spätere Verwendung cout <<"Laenge" << laenge << endl; for(i=laenge-1; i>=0; i--) //Beginn des Case { switch (HexEingabe[i]) { case'A': case'a': HexArray[s]=10; break; case'B': case'b': HexArray[s]=11; break; case'C': case'c': HexArray[s]=12; break; case'D': case'd': HexArray[s]=13; break; case'E': case'e': HexArray[s]=14; break; case'F': case'f': HexArray[s]=15; break; default : HexArray[s]= HexEingabe[i]-48; } } cout <<HexArray[s]<<endl; dezWerte = dezWerte+ HexVorgabe[s]*HexArray[s];s = s+1; cout << endl<< "Ergebnis:" << dezWerte; return 0; }
Ich bedanke mich für jede Hilfe
-
case'1':
testet das Zeichen (char) Eins, antwort ist aber eine Zahl (int).
-
@manni66 Habe es Angepasst
-
@HeavyStrike Du solltest die mal das Horner-Schema ansehen, speziell https://de.wikipedia.org/wiki/Horner-Schema#Umwandlung_zwischen_verschiedenen_Zahlensystemen
Da brauchst du keine 3 Verschiedenen Routinen oder ein Array mit den Grundwerten der Stellen.
string Eingabe; .... unsigned int Wert = 0; Basis = 2; // hier für Binärzahlen for(i=0; i<laenge;++ i) { int Ziffer; // Überprüfen, ob das Zeichen zur Basis passt Ziffer = Eingabe[i] - '0'; // passt bis Basis 10 Wert = Wert * Basis + Ziffer; }
Zur Überprüfung der Zeichen gibt es nette Funktionen/Makros in <cctype> z.B
isdigit
oder auchtoupper