[HILFE]Subtrahieren in C++



  • Omfg. Ich danke dir! Schön wäre wenn du mir noch jemand erklären könnte wieso wesshalb warum^^. Ich möchte ja auch etwas lernen dabei!



  • blubber31 schrieb:

    ....
    

    sag mal bei dir kann ich das iwie nicht lösen meinst du das hat nen grund 😉



  • Eventuell, weil ich keine Kommentare habe und mein Code total unleserlich ist, weil er keine "formatierung" besitzt? Aber das Problem ist ja gelöst. Würde nur noch gerne wissen, warum ich denn Leben-- machen muss und nicht einfach Leben=(Leben-1)^^

    Edit: Ups du meintest blubber. Ehm... weil das Problem gelöst ist irgendwie? Ich antworte mal stellvertretend.



  • xBACHERx schrieb:

    Omfg. Ich danke dir! Schön wäre wenn du mir noch jemand erklären könnte wieso wesshalb warum^^. Ich möchte ja auch etwas lernen dabei!

    also dein fehler war eigentlich das du die klammer falsch gesetzt hast und Leben nicht auf eine untere grenze getestet hast.

    (Leben=Leben-1)
    statt
    Leben=(Leben-1)
    

    xBACHERx schrieb:

    Würde nur noch gerne wissen, warum ich denn Leben--...

    hängt damit zusammen das -- vor << ausgeführt wird das ganze nennt sich dann http://www.cppreference.com/wiki/operator_precedence und ist vergleichbar mit punkt vor strich...



  • also dein fehler war eigentlich das du die klammer falsch gesetzt hast und Leben nicht auf eine untere grenze getestet hast.

    (Leben=Leben-1)
    statt
    Leben=(Leben-1) 	
    C/C++ Code:
    (Leben=Leben-1)
    statt
    Leben=(Leben-1) 	
    C/C++ Code:
    (Leben=Leben-1)
    statt
    Leben=(Leben-1)
    

    Das versteh ich noch. Heißt so viel wie ... du hast nicht angegeben, dass Leben nicht unter 0 sein darf... Und wenn ich es ohne "--" machen möchte muss ich halt alles in die Klammer nehmen und nicht nur die Rechnung?



  • das war evtl. ein bischen blöd erklärt, wie du aus dem link entnehmen kannst,

    "--" => 3
    "<<" => 7
    "="  => 16
    "*"  => 5
    "+"  => 6
    

    weniger ist besser und wird zuerst bearbeitet und da das = vor dem <<
    bearbeitet werden soll muß es eben in die klammer mit rein

    << Leben=(Leben-1) <<
    ^       ^          ^
    7      16          7
    

    da du aber vor der ausgabe zuweisen willst

    << (Leben=Leben-1) <<
    ^  ^             ^ ^
    7  2             2 7
    

    so wie mit

    5
     v
    5*3+2 = 17
       ^
       6
    

    willst du das + vor dem * ausfühern, brauchst ne klammer

    5
     v
    5*(3+2) = 25
      ^   ^
      2   2
    

    das ist echt blöd zu erklären 😞



  • Hm... AHA! ...Danke für deinen Versuch 😃 und für die Schnelle hilfe von dir und Blubber.



  • xBACHERx schrieb:

    Hm... AHA! ...Danke für deinen Versuch 😃 und für die Schnelle hilfe von dir und Blubber.

    Ja kein Problem, du hast bloß die Schleifenbedingung vergessen zu setzen:

    do
    {
    }while(true);
    
    auf:
    
    do
    {
    }while(leben) /* oder leben!=0 */
    


  • Ich würde aber "--Leben" benutzen, also das Predekrement, denn es soll ja erst subtrahiert werden und dann der Wert ausgegeben werden.
    Bei "Leben--" wird z.B. erst 7 ausgegeben und dann der Wert auf 6 gesetzt.

    Denn "--Leben" entspricht ja dem gewollten "(Leben = Leben - 1)"!



  • Hm.. Ich habe jetzt

    Ja kein Problem, du hast bloß die Schleifenbedingung vergessen zu setzen:

    So gelöst:

    if(Leben == 0)
    		{
    			cout << " Sie haben verloren! " << endl;
    			break; 
    		}
    
    	}while(true);
    

    Die saceh mit den "--" habe ich so gelöst wie von TH69 vorgeschlagen gelöst. So ist mein Spiel jetzt perfekt, wie ich finde 😃 Zumindest zum Spielen. Es gibt bestimmt noch ein paar nette Sachen die ich reinbaun kann.

    Das Thema kann jetzt geschlossen werden. Ich bedanke mich nochmal bei euch für die schnelle Hilfe.


Anmelden zum Antworten