1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Java Postfix --> Infix

    • Frage
  • WhiteFist
  • 27. Mai 2003 um 11:12
  • Unerledigt
  • WhiteFist
    4
    WhiteFist
    Mitglied
    Punkte
    100
    Beiträge
    13
    • 27. Mai 2003 um 11:12
    • #1

    Kann mir jemand allgemein erklären, wie ich einen gegebenen Postfix Ausdruck in einen geklammerten Infix Ausdruck umwandeln kann in Java !

    Ich muss eine Methode schreiben, die das realisiert.



    MfG

  • lj_scampo
    8
    lj_scampo
    Mitglied
    Reaktionen
    2
    Punkte
    557
    Beiträge
    110
    • 27. Mai 2003 um 12:39
    • #2

    am besten gehst du es mit einer baumstruktur an: wenn du z.b. "5 3 3 8 + - * 2 +" gegeben hast, dann faengst du von hinten an, die baumelemente aufzubauen: operatoren sind knoten, zahlen sind blaetter.

    Code
    ....+
    .../ \
    ..*  2
    ./ \
    5   -
    .../ \
    ...3  +
    ...../ \
    .....3  8

    und jetzt den baum von links nach rechts auslesen (auf die klammern nicht vergessen - am einfachsten ist es, immer klammern zu setzten, auch wenn es eigentlich gar nicht noetig waere, wie z.b. in "3+(3+3)" ):
    (5*(3-(3+8)))+2
    hoffe, das hilft dir weiter

    [edit] verruckelten baum layouten

  • Bomple
    8
    Bomple
    Mitglied
    Punkte
    645
    Beiträge
    127
    • 29. Mai 2003 um 20:02
    • #3
    Zitat von WhiteFist

    Kann mir jemand allgemein erklären, wie ich einen gegebenen Postfix Ausdruck in einen geklammerten Infix Ausdruck umwandeln kann in Java !

    Ich muss eine Methode schreiben, die das realisiert.

    also ich tät da nicht mit einem baum herumtun sondern das ganze gleich rekursiv machen... (dh. eine methode die sich selbst aufruft)

    ich versuch das ganze mal als (java-tauglicher) pseudocode (bin zu faul über die genaue syntax nachzudenken, ausserdem kenn ich deine vorgaben nicht)

    String convert () {
    String tok = getLastToken();
    if (tok ist eine Zahl)
    return tok;
    else {
    String string1 = convert();
    String string2 = convert();
    return "(" + string2 + tok + string1 + ")";
    }
    }

    erklärung zu getLastToken():
    konsumiert das letzte token von der eingabe (ein token ist entweder ein operator oder eine zahl) und liefert es als string zurück.
    da postfix relativ ungünstig für meine funktion ist lese ich das ganze einfach als prefix ein, dh. immer das letzte token zuerst.
    zum zerlegen der eingabe in token würd ich übrigens die stringbuffer klasse verwenden, die is echt praktisch...

    weitere details von convert():
    Damit dann die reihenfolge der operanden nicht umgedreht wird verwende ich beim rückgabestring zuerst string2 und dann erst string1 (das is notwendig da ich ja von hinten einlese)

    die funktion geht übrigens davon aus das mindestens ein token vorhanden ist...


    hoffe geholfen zu haben... bei fragen bitte melden :grinning_squinting_face:

  • Maximilian Rupp 27. Dezember 2024 um 12:08

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung