+
/ \
9 +
/ \
- \
/ \ \
x 4 x
/ \ / \
3 5 + 5
/ \
x 4
/ \
7 '/'
/ \
2 -
/ \
x 2
/ \
8 4
a * b / c = (a * b) / c = a * (b / c)
Könntest Du mal versuchen, mir diesen Weg zu beschreiben? Danke im Voraus.Code:+ / \ 9 + / \ - \ / \ \ x 4 x / \ / \ 3 5 + 5 / \ x 4 / \ 7 '/' / \ 2 - / \ x 2 / \ 8 4
Naja:Könntest Du mal versuchen, mir diesen Weg zu beschreiben? Danke im Voraus.
1 + 2 + 3
als (1 + 2) + 3
oder als 1 + (2 + 3)
im Baum repräsentieren willstA
und B
auf, wobei A
der Teil links vom Operator aus 2. ist, und B
der Teil rechts vom Operator aus 2.A
und B
an, wobei der für A
entstandene Teilbaum dann das linke Kind des Knotens aus 4. wird und der für B
entstandene Teilbaum das rechte Kind des Knotens aus 4.25 - 5/5 = 4!
Sowas muss man halt können und verstehen! +
/ \
a +
/ \
b *
/ \
c d
... nennen die Methoden dann noch getSummOfTwoValues(...) oder getFirstValueDivideBy2ndValue(...) und nennen die Variablen beim Wert, also valueOfNine und valueOfSeven ...Aus a+b+c*d wird dann z. B. add(a, add(b, mult(c,d))) und schon hast Du den Baum dastehen.
Ja, oder halt Präfixnotation, weil der Operator vor den Operanden steht. Ich habe absichtlich Funktionen gewählt, weil sich die Leute damit eher auskennen und vermutlich leichter tun.Da sind wir doch gleich bei der Polnischen Notation
Danke, so kann ich es nachvollziehen. Aber die Aufgabe 25-5/5 = 4 verstehe ich nicht. Ich würde erst 5/5 rechnen = 1 und 25-1 = 24. Warum wäre das falsch?Alternativ kann man auch den umgekehrten Weg gehen und den Baum sozusagen von unten nach oben statt von oben nach unten aufzubauen.
Das hat den Vorteil, dass Du genau so vorgehen kannst wie bei dem Ausrechnen.
Du hast also z.B. eine Aufgabe wie (2 + 4) * 7 + 3 * (2 + 3)
Wie rechnest Du das aus? Was musst Du zuerst ausrechnen, um zum richtigen Ergebnis zu kommen?
Klammern kommen zuerst, also als erstes musst Du 2+4 und 2+3 Rechnen. Damit hast Du die ersten Zwei Teilbäume - jeweils ein Knoten mit + und die Blätter sind einmal 2 und 4 und einmal 2 und 3.
Was kommt dann? Beim ersten Teilbaum kommt das * 7 und beim zweiten Teilbaum das 3 *
Also hast Du jeweils den Operator als Knoten und rechts und links kommen die Operanden dran. Diesmal ist halt der erste Teilbaum und die 7 und beim zweiten dann die 3 und der zweite Teilbaum.
Dann kommt am Ende noch die Addition.
Das ist von der Logik her evtl. leichter zu verstehen. Und damit wird auch die Umsetzung relativ einfach, wenn man es implementieren müsste.
Aber das ist jetzt eine sehr subjektive Sichtweise, da dies halt genau meiner Herangehensweise entsprechen würde, wenn ich sowas rechnen müsste.
Da ist halt nur wichtig, dass man die fachliche Seite beherrscht ... Und da fällt mir nur ein:25 - 5/5 = 4!
Sowas muss man halt können und verstehen!
public class Main {
public static void main(String[] args) {
System.out.println(25-5/5);
}
}
eclipse mit java 17 würde es auch so rechnenDanke, so kann ich es nachvollziehen. Aber die Aufgabe 25-5/5 = 4 verstehe ich nicht. Ich würde erst 5/5 rechnen = 1 und 25-1 = 24. Warum wäre das falsch?
Das war ein kleiner Joke ... Du rechnest richtig nur eben hast Du das ! vergessen. Das Ergebnis ist nicht 4 sondern 4! und 4! = 1*2*3*4 = 24Danke, so kann ich es nachvollziehen. Aber die Aufgabe 25-5/5 = 4 verstehe ich nicht. Ich würde erst 5/5 rechnen = 1 und 25-1 = 24. Warum wäre das falsch?