Diskussion:Shunting-yard-Algorithmus

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 14. Januar 2021 um 12:19 Uhr durch 77.12.84.128 (Diskussion). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Letzter Kommentar: vor 4 Jahren von 77.12.84.128 in Abschnitt Fehler im Algorithmus?
Zur Navigation springen Zur Suche springen

Beispiele vonnöten!

Letzter Kommentar: vor 11 Jahren 2 Kommentare2 Personen sind an der Diskussion beteiligt

Ich bin der Meinung, dass man das ganze Veranschaulichen kann, indem man ein Beispiel einfügt, sodass zumindest erkennbar ist, was bei diesem Algorithmus zu was wird. Das ist in dem englischen Artikel http://en.wikipedia.org/wiki/Shunting-yard_algorithm ganz gut gelöst, finde ich. --Nico 17:00, 29. Jul. 2010 (CEST) Beantworten

Ich habe mir jetzt einfach mal drei Bsp. ausgedacht und überprüft und hoffe sie sind allgemein genug. Argumenttrennzeichen habe ich zunächst mal weggelassen, kommt aber sicher noch. --Spezialist D 01:30, 18. Sep. 2013 (CEST) Beantworten

Divisionsoperator als Bruchstrich oder nicht

Letzter Kommentar: vor 11 Jahren 1 Kommentar1 Person ist an der Diskussion beteiligt

Man sollte vielleicht anmerken, dass im Pseudocode der Divisionsoperator (linksassotiativ, gleiche Präzedenz wie Multiplikationsoperator) als Bruchstrich gesehen wird (was einer Klammerung von Zähler und Nenner entspricht).

Die Eingabe von 6 / 2 * 3 führt zum Ergebnis 6 2 3 * /

Möchte man das nicht (sondern 6 2 / 3 *) und den Divisionsoperator wie (in Programmiersprachen) üblich verwenden, so muss der entsprechende Teil im Pseudocode folgendermaßen lauten:

 WENN Token IST-Operator
 SOLANGE Stack IST-NICHT-LEER UND Stack-Spitze IST Operator UND
 Präzedenz von Token IST-KLEINERGLEICH Präzedenz von Stack-Spitze:
 Stack-Spitze ZU Ausgabe.
 ENDESOLANGE
 Token ZU Stack.
 ENDEWENN (nicht signierter Beitrag von Masterle (Diskussion | Beiträge) 08:39, 17. Okt. 2013 (CEST))Beantworten 

BIS/SOLANGE

Mir kommt es komisch vor, dass die Anweisung an der einen Stelle SOLANGE heißt und an der anderen BIS. Ich denke, ich verstehe den Unterschied (BIS ist wie ein SOLANGE NICHT) aber ich habe erstmal gedacht, dass es sich um eine nachprüfende Schleife handelt. Ich würde es so lösen wie in der englischsprachigen Version, wo es überall WHILE heißt.

Fehler im Algorithmus?

Letzter Kommentar: vor 4 Jahren 1 Kommentar1 Person ist an der Diskussion beteiligt

Ich habe den Algorithmus implementiert und errechne dann mit der RPN das Ergebnis. Viele Rechnungen führen zum richtigen Ergebnis.

Allerdings wird zu infix 4-5+6 die RPN 4 5 6 + - erzeugt, was zum Ergebnis -7 führt, wobei dieses doch 5 ist.

Erwartet hätte ich die RPN 4 5 - 6 +. Diese erreiche ich jedoch mit dem hier im Pseudocode festgehaltenen Algorithmus nicht. Liegt der Fehler bei mir oder tatsächlich hier im Pseudocode?

Hier die Schritte wie ich sie nach diesem Algortihmus verstehe ( und wie es leider nicht funktioniert):

  1. Token 4 zur Ausgabe
  2. Token - auf den Stack
  3. Token 5 zur Ausgabe
  4. Da Token + nicht linksassoziativ ist, wird die Stack-Spitze (Minus operator) nicht ausgegeben
  5. Token + landet auf dem Stack
  6. Token 6 zur Ausgabe
  7. Der Stack wird Top-Down abgeräumt:
    1. Token + zur Ausgabe
    2. Token - zur Ausgabe
(nicht signierter Beitrag von 77.12.84.128 (Diskussion) 12:10, 14. Jan. 2021 (CET))Beantworten 
Abgerufen von „https://de.wikipedia.org/w/index.php?title=Diskussion:Shunting-yard-Algorithmus&oldid=207632591"