Operatorbaum



  • danke dir, für die schnelle Antwort! Wenn ich deinen Baum richtig interpretiere, habe ich den selben 🙂

    Habe jetzt allerdings nochmals eine Frage, zu diesem Ausdruck:

    c = 1 + ((b%7) ? b/a : 2) + -y * (int) ++x *3
    

    Stimmt mein Operatorbaum soweit? (siehe Link)
    Und ich habe jetzt einfach mal intuitiv mit dem + in der Mitte begonnen, ist das egal? Habe mal beide Bäume gezeichnet einmal mit + in der Mitte gestartet und einmal mit dem Vorderen...die Bäume sehen unterschiedlich aus, aber wenn ich die Werte a=3, b=7, x=1,4 und y=2 einsetze erhalte ich beides mal c=-9 und somit wäre es doch egal mit welchem ich "starte ?! 😕

    Link:

    http://www.bilder-hochladen.net/files/eb0o-2-c81e-jpg-nb.html
    

    Danke schon einmal...

    MfG
    Kaula



  • *push* 😃

    ich weiß...bin ungeduldig^^



  • Kaula schrieb:

    Und ich habe jetzt einfach mal intuitiv mit dem + in der Mitte begonnen, ist das egal? Habe mal beide Bäume gezeichnet einmal mit + in der Mitte gestartet und einmal mit dem Vorderen...die Bäume sehen unterschiedlich aus, aber wenn ich die Werte a=3, b=7, x=1,4 und y=2 einsetze erhalte ich beides mal c=-9 und somit wäre es doch egal mit welchem ich "starte ?! 😕

    Du musst die Assoziativität der Operatoren beachten. + und * sind beispielsweise linksassoziativ, d.h. a+b+c muss als ((a+b)+c) interpretiert werden, nicht als (a+(b+c)). Deine + sind also richtig gesetzt, die * sind falsch.



  • Danke dir Bashar! 👍 Das mit der Assoziativität habe ich irgendwie völlig vergessen 🙄

    Habe es jetzt nochmals probiert und nun müsste der Baum stimmen oder?

    http://www.bilder-hochladen.net/files/eb0o-3-eccb.jpg
    


  • Sieht gut aus.



  • Moin zusammen,

    ich habe hier gerade nochmals einen Ausdruck gefunden, der mir ein paar Probleme bereitet 😕

    c = x * ( (int) (3**p) % 2) ? ++a + b++ : (--a - b--)
    

    Stimmt dieser Baum dazu?

    http://s7.directupload.net/file/d/2576/rna4ngr5_jpg.htm
    

    LG



  • Ja, man erkennt nur leider nicht, ob das jeweils Prä- oder Postinkrementoperatoren sind, da müsstest du dir noch was einfallen lassen. Evtl. ++pre und ++post schreiben.



  • Bashar schrieb:

    Ja, man erkennt nur leider nicht, ob das jeweils Prä- oder Postinkrementoperatoren sind, da müsstest du dir noch was einfallen lassen. Evtl. ++pre und ++post schreiben.

    Ok perfekt, danke dir 👍 Habe das mal verbessert...

    Nun tritt nämlich mein Problem auf, denn ich soll den Wert für c bestimmen.

    Folgende "Daten" sind gegeben:

    double x=1.2, *p=&x, c;
    int a=1, b=2;

    Wenn ich jetzt mal in dem "Bedingungs-Ast" die gegebenen Werte einsetze, erhalte ich ja 3%2. D.h. eine 1 geht weiter nach oben und wird nun mit dem x(1.2) multipliziert...Erhalte dann 1.2 vom Typ double.

    Aber wie geht es jetzt weiter? Ich dachte in der Bedingung wird entweder bei 1 der Wahr-Zweig ausgewählt oder bei 0 der Sonst-Zweig...Aber nun habe ich ja da 1.2 😕 😕



  • Alles ungleich 0 ist wahr.



  • Bashar schrieb:

    Alles ungleich 0 ist wahr.

    erklärt einiges 😃

    top, danke 👍


Anmelden zum Antworten