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 Dezimal

    Mein 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 auch toupper


Anmelden zum Antworten