Falsche Rechenausgabe



  • Hallo,

    ich habe mich wieder dazu entschlossen micht mit dem Thema C++ zu beschäftigen. Um wieder den Einstieg zu finden, habe ich mir diverse Quellcodes angeschaut.

    Mein Versuch, einen simplen Taschenrechner als Konsolenanwendung zu schreiben (nach Vorlage), funktioniert soweit auch problemlos. Jedoch ist das Ergebnis (Ausgabe) falsch ... Leider kann ich den Fehler nirgendwo erkennen.

    z.Bsp.: Ich erhalte bei "5+5" als Ergebnis "5 + 9211280014 😕

    Das Problem tritt bei jeder Rechenoperation und jeder Zahl auf.

    Vielen Dank bereits 😉

    Christian

    #include <iostream>
    
    using namespace std;
    
    int main() {
    	double zahl1, zahl2;
    	double ergebnis;
    	char rechenzeichen;
    
    	cout << "Bitte geben Sie die Rechenaufgabe ein: " << endl;
    	cin >> zahl1 >> rechenzeichen >> zahl2;
    
    	switch (rechenzeichen) {
    		case '+': ergebnis = zahl1 + zahl2; break;
    		case '-': ergebnis = zahl1 - zahl2; break;
    		case '*': ergebnis = zahl1 * zahl2; break;
    		case '/': ergebnis = zahl1 / zahl2; break;
    
    		// Fehlerausgabe und Programm beenden, falls falsches Rechenzeichen eingegeben wurde
    
    		default: cout << "Ung\x81ltiges Rechenzeichen! \n"; return 1;
    
    	}
    
    	// Aufgabe zum Schluss erneut komplett ausgeben
    
    	cout << zahl1 << ' ' << rechenzeichen << ' ' << zahl2 << ' = ' << ergebnis << '\n';
    }
    


  • Strings werden mit " geschrieben. Keine Ahnung, was der Compiler aus ' = ' macht, offensichtlich aber nichts brauchbares.



  • AFAIK wird

    ' = '
    

    als 32Bit integer behandelt, um genau zu sein "2112800". Und so wird es dann auch ausgegeben. 😉



  • " ergibt ein nullterminiertes char-array, ' ein char Die einzelnen eingaben werden bei >> durch Leerzeichen getrennt, dh du musst tatsächlich '5 + 5' eingeben.



  • roflo schrieb:

    Die einzelnen eingaben werden bei >> durch Leerzeichen getrennt, dh du musst tatsächlich '5 + 5' eingeben.

    Nein muss man nicht.



  • Hast recht.



  • DarkShadow44 schrieb:

    AFAIK wird

    ' = '
    

    als 32Bit integer behandelt, um genau zu sein "2112800". Und so wird es dann auch ausgegeben. 😉

    Kann man das irgendwie abändern/weiterverarbeiten? Sprich das Ausgabe"format"?



  • chp31 schrieb:

    DarkShadow44 schrieb:

    AFAIK wird

    ' = '
    

    als 32Bit integer behandelt, um genau zu sein "2112800". Und so wird es dann auch ausgegeben. 😉

    Kann man das irgendwie abändern/weiterverarbeiten? Sprich das Ausgabe"format"?

    nimm "richtige" Gänsefüßchen (shift+2). Dann wird das so ausgegen, wie erwartet


Log in to reply