[C++] Problem mit meinem Zeilenzähler



  • Hallo, Community!

    In Zeile 14 wurde ein "Zeilenzähler" plaziert. Da er sich im "do-Block" befindet, kommt eine merkwürdige Ausgabe. Konkreter:

    Eingabe von 3+2-1 im Programm ergibt:

    Z1: 0+3+2-1
    Z2: 3Z3: 5Z4: 4

    statt der gewünschten Ausgabe (ohne Zwischenergebnisse):

    Z1: 0+3+2-1
    Z2: 4

    PS: Ich bin zurzeit mit folgenden fertigkeiten vertraut: Basics, Variablen und Datentypen, Konstrollstrukturen, Funktionen und Methoden, Strukturen, Schleifen.

    Folgende fertigkeiten lerne ich mir zurzeit an: Klassen und Zeiger.

    Verwendetes Sachbuch: GoTo C++ Programmierung Andre Willms (Uralt aber gut) 😉

    Also bitte etwas entsprechendes. 😃
    Danke!

    EDIT:

    Oh, falls das helfen soll das Programm soll ein kleiner Taschenrechner sein.

    ProgrammCode:

    #include<iostream>
    #include<cmath>
    using namespace std;
    
    int main(void)
    {
    
    float wert = 0, puffer = 0, i = 1;
    char  befehl;
    
    	do
    	{
    	    cout<<"Z"<<i++<<": "<<puffer;
    	    cin>>befehl;
    
    		switch(befehl)
    		{
    			case'+':
                    cin>>wert;
    				puffer += wert;
    				break;
    			case'-':
                    cin>>wert;
    				puffer -= wert;
    				break;
    			case'*':
                    cin>>wert;
    				puffer *= wert;
    				break;
    			case'/':
                    cin>>wert;
                    if(wert==0)
                    {
                    cout<<"Division durch 0 nicht definiert"<< endl;
                    break;
                    }
                    else{}
    				puffer /=wert;
    				break;
    			case'^':
                    cin>>wert;
    				puffer = pow(puffer, wert);
    				break;
    			case'w':
                    cin>>wert;
                    if(wert<0)
                    {
                    cout<<"Radizieren eines negativen Radikanden nicht definiert"<< endl;
                    break;
                    }
                    else{}
                    puffer = sqrt(wert);
    				break;
    			case'r':
    				wert = 0;
    				puffer = 0;
    				break;
    			case'c':
    				system("cls");
    				break;
    			default:
    				cout<<"Ungueltiges Zeichen"<< endl;
    				break;
    
    		}
    
    }
    	while(befehl != 'b');
    
    }
    


  • Warte mit der Ausgabe auf einen Zeilenumbruch, wenn du einen Zeilenzähler willst. ( '\n' ).



  • drakon schrieb:

    Warte mit der Ausgabe auf einen Zeilenumbruch, wenn du einen Zeilenzähler willst. ( '\n' ).

    Und wie mach ich das mit den Zwischenergebnissen? Die sollten ja nicht erscheinen 😃

    EDIT:

    Z1: 0+2+3-1
    // Hier fehlts aber!!!
    Z2: 2 <-- Weg damit
    Z3: 5 <-- Weg damit
    Z4: 4

    do
    	{   cout<<"\n";
    	    cout<<"Z"<<i++<<": "<<puffer;
    	    cin>>befehl;
    


  • Individual Code schrieb:

    drakon schrieb:

    Warte mit der Ausgabe auf einen Zeilenumbruch, wenn du einen Zeilenzähler willst. ( '\n' ).

    Und wie mach ich das mit den Zwischenergebnissen? Die sollten ja nicht erscheinen 😃

    EDIT:

    Z1: 0+2+3-1
    // Hier fehlts aber!!!
    Z2: 2 <-- Weg damit
    Z3: 5 <-- Weg damit
    Z4: 4

    Lies einfach mit

    std::getline(std::cin, eineVariabelFuerDenWert);
    

    eine ganze Zeile ein und nutze diese als Berechnungsgrundlage. Anschließend gibst du erst das Ergebnis aus... Du wirst vermutlich die Funktion

    isdigit
    

    benötigen, um die Zahlen aus dem String zu bekommen


Anmelden zum Antworten