präfix zu infix algorithmus

Status
Nicht offen für weitere Antworten.

RoliMG

Mitglied
hallo liebe java-community!
ich habe aus übung folgendes problem zu lösen:
ich muss einen rekursiven algorithmus entwicklen, der einen präfix-string in infixnotation ausgibt.
dabei soll ein char array verwendet werden und es darf auch ein zweiter hilfsalgorithmus erstellt werden. externe strukturen wie bäume oder stacks dürfen nicht verwendet werden. der präfix-string ist 0 terminiert(zum schluss kommt eine 0)
der algorithmus soll so aussehen:
Code:
boolean writeInfix(char expr[])
der algorithmus gibt zurück ob der string(expression bzw das char array) korrekt ist.
beispiele:
+ab wird zu (a+b)
+-abc wird zu ((a-b)+c)
usw.

folgenden ansatz habe ich schon:
ich habe einen zweiten algorithmus definiert, der noch zusätzlich die stringposition übernimmt.
Code:
public static boolean writeInfix(char expr[]) {
        writeInfix(expr, 0);
        return true;
    }
    
    public static void writeInfix(char expr[], int pos) {
        if(expr[pos] == '0') {
            return;
        }
        
        if(expr[pos] == '+') {
            System.out.print("(");
            writeInfix(expr, pos +1);
            System.out.print(expr[pos]);
        } else {
            System.out.print(expr[pos]);
        }
    }
bei diesem ansatz habe ich aber das problem, dass bei dem string "+ab" nur "(a+" ausgegeben wird. ich müsste mir irgendwie merken, wo der algorithmus nach dem + weiterarbeiten soll. habe aber leider keine idee wie das ordentlich auszuprogrammieren ist.
bitte um hilfe!

edit:
sorry!
habe leider erst jetzt gemerkt das der titel des threads "präfix zu infix algorithmus" lauten müsste.

Edit by Illuvatar: Titel geändert.
 
S

SlaterB

Gast
vor allem wird
+-a..
zu
(+-..

die Regel muss also sein:
bei +:
(
rekursiver Aufruf 1
+
rekursiver Aufruf 2
)


dieser rekursiver Aufruf ist dann nicht nur ein Zeichen sondern kann beliebig große Strukturen zusammenbauen,
je nachdem was im String drin ist

du brauchst also auch die Info, wieviele Zeichen 'rekursiver Aufruf 1' liest
 

RoliMG

Mitglied
so weit funktioniert mein algorithmus dank deiner hilfe!
jetzt muss ich aber noch zusätzlich erkennen ob ein ausdruck fehlerhaft eingegeben wurde.
z.b.:
-a
+-ab
etc.
aber wie kann ich das bewerkstelligen?
meinem algorithmus ist ja nur bekannt wann der string zu ende ist, aber nicht, dass er zu früh endet.
 
S

SlaterB

Gast
bei +:
[Test dass String noch nicht am Ende ist, sonst Fehler]
(
rekursiver Aufruf 1
+
[Test dass String noch nicht am Ende ist, sonst Fehler]
rekursiver Aufruf 2
)
 

RoliMG

Mitglied
sorry das ich langsam nerve :oops:
aber:
jetzt habe ich das problem, dass mein algorithmus "+-ab" als fehlerhaft erkennt, aber "+abc" als (a+b) erkennt und sagt es sei richtig. hier der code:
Code:
static int count = 0;

    public static boolean writeInfix(char expr[], int pos) {
        boolean erg = true;
        
        if (expr[pos] == '0') {
            return false;
        }
        
        count++;

        if (expr[pos] == '+' || expr[pos] == '-' || expr[pos] == '*'
                || expr[pos] == '/') {
            System.out.print("(");
            writeInfix(expr, pos + 1);
            System.out.print(expr[pos]);
            erg = writeInfix(expr, count);
            System.out.print(")");
        } else {
            System.out.print(expr[pos]);
        }

        return erg;
    }
 
S

SlaterB

Gast
in der ersten Stufe musst du auslesen, obs am Ende noch weitergeht,
kannst an pos=0 merken, wenn das immer der Fall ist oder in einer zweiten Operation wie am Anfang,

in
Code:
public class Test
{

    public static void main(String[] args)
        throws Exception
    {
        System.out.println(writeInfix("+".toCharArray(), 0));
    }

    static int count = 0;

    public static boolean writeInfix(char expr[], int pos)
    {
        boolean erg = true;

        if (expr[pos] == '0')
        {
            return false;
        }

        count++;

        if (expr[pos] == '+' || expr[pos] == '-' || expr[pos] == '*' || expr[pos] == '/')
        {
            System.out.print("(");
            writeInfix(expr, pos + 1);
            System.out.print(expr[pos]);
            erg = writeInfix(expr, count);
            System.out.print(")");
        }
        else
        {
            System.out.print(expr[pos]);
        }

        return erg;
    }


}
gibts übrigens für "+" eine Exception, falls das so auch dein Programm ist
 

RoliMG

Mitglied
vielen dank für die hilfe!
so funktioniert es:
Code:
static int count = 0; // gedächtnis für die gelesenen zeichen

    public static boolean writeInfix(char expr[]) {
        boolean erg = writeInfix(expr, 0);

        if (count < expr.length - 1) {
            // kontrollieren ob es nachher noch zeichen gäbe
            erg = false;
        }

        return erg;
    }

    public static boolean writeInfix(char expr[], int pos) {
        boolean erg = true;

        if (expr[pos] == '0') {
            // bis hierher kommt der algo nur bei falschen ausdrücken
            return false;
        }

        count++; // Zeichenzähler

        if (expr[pos] == '+' || expr[pos] == '-' || expr[pos] == '*'
                || expr[pos] == '/') {
            System.out.print("(");
            writeInfix(expr, pos + 1); // linke seite des operators
            System.out.print(expr[pos]);
            erg = writeInfix(expr, count); // rechte seite des operators
            System.out.print(")");
        } else {
            System.out.print(expr[pos]); // ausgabe der konstante
        }

        return erg;
    }

edit:
dieser code ist für die aufgabenstellung angpasst worden.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Binärbaum aus Infix- und Präfixordnung erstellen Allgemeine Java-Themen 5
B Algorithmus für Arbeit mit fehlenden Listenelementen? Allgemeine Java-Themen 1
schegga_B AES-Algorithmus in javax.crypto Allgemeine Java-Themen 3
M Laufzeit des Prim Algorithmus Allgemeine Java-Themen 3
O Newton Algorithmus Java Allgemeine Java-Themen 1
CptK Backpropagation Algorithmus Allgemeine Java-Themen 6
N Google Authenticator Algorithmus (SHA1) Allgemeine Java-Themen 1
gotzi242 Schatzsuche mithilfe eines O(log n) Algorithmus Allgemeine Java-Themen 2
Zrebna Quicksort-Algorithmus - zufälliges Pivot wählen Allgemeine Java-Themen 6
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30
B Algorithmus Warteschlange Ringpuffer wirklich fehlerfrei Allgemeine Java-Themen 8
M Probleme mit Negamax-Algorithmus Allgemeine Java-Themen 29
F Q - Learning Algorithmus Bug Allgemeine Java-Themen 4
M Salesman Problem - Bruteforce Algorithmus Allgemeine Java-Themen 23
M Minmax Algorithmus Verständnisproblem Allgemeine Java-Themen 2
H Rundreise frage (Algorithmus) Allgemeine Java-Themen 18
F KMP-Algorithmus Allgemeine Java-Themen 9
S Algorithmus welcher True-Werte in einem Array findet und auswertet. Allgemeine Java-Themen 5
U Methoden Algorithmus MergeSort String [ ] array sortieren programmieren Allgemeine Java-Themen 17
P MinMax Algorithmus Allgemeine Java-Themen 0
J Abhängigkeit zwischen Rechenzeit und Speicherbedarf in einen Algorithmus Allgemeine Java-Themen 7
K Djikstra-Algorithmus Allgemeine Java-Themen 1
T Minimax/Alphabeta Algorithmus hängt sich auf (?) Allgemeine Java-Themen 2
M Algorithmus zum Zahlen einteilen Allgemeine Java-Themen 8
O Best Practice Hilfe bei Algorithmus gesucht Allgemeine Java-Themen 10
S Algorithmus um Objekte auf einer Flaeche mit gleichem Abstand anzuordnen..? Allgemeine Java-Themen 20
S Rucksackproblem und genetischer Algorithmus Allgemeine Java-Themen 9
L Abbruch des Algorithmus Allgemeine Java-Themen 8
D Input/Output Ausgleichen chemischer Reaktionsgleichungen mit dem Gauß-Algorithmus Allgemeine Java-Themen 2
Messoras A*-Algorithmus integrieren Allgemeine Java-Themen 3
S Buchscan 3D Dewarp Algorithmus - Ansätze Allgemeine Java-Themen 1
B Verteilungs-/Vergabe-Algorithmus mit abhängigen Score-Werten Allgemeine Java-Themen 3
Androbin "Shunting Yard"-Algorithmus Allgemeine Java-Themen 6
B Algorithmus - Project Euler Problem 18 Allgemeine Java-Themen 2
N Algorithmus zum bewerten von mathematischen Funktionen Allgemeine Java-Themen 11
O Algorithmus Optimierung Allgemeine Java-Themen 3
Joew0815 Algorithmus - Zahlenfolge in 4 ähnliche Teile aufteilen Allgemeine Java-Themen 0
O Tag Cloud Algorithmus Idee gesucht Allgemeine Java-Themen 2
A Implementierung eines Algorithmus (Farthest Insertion zur Lösung des TSP) in O(n²) Allgemeine Java-Themen 2
C Eclipse Probleme bei selbst erstelltem Algorithmus Allgemeine Java-Themen 2
H Graph-Algorithmus gesucht Allgemeine Java-Themen 21
N Algorithmus durch Workflow Allgemeine Java-Themen 7
M tree-based diff Algorithmus (Code-Vergleiche) Allgemeine Java-Themen 3
S Uhrzeit Algorithmus sale Allgemeine Java-Themen 11
N A*-Algorithmus Allgemeine Java-Themen 5
A Suche Algorithmus zum Erstellen eines planaren Graphen Allgemeine Java-Themen 5
F Methoden Algorithmus zur Gegnerfindung (Turnier) Allgemeine Java-Themen 9
T Algorithmus Graph Allgemeine Java-Themen 10
J Algorithmus gesucht (Stringtransformation) Allgemeine Java-Themen 4
B Algorithmus Krankenhausbelegung Allgemeine Java-Themen 17
S Algorithmus von Dijkstra Allgemeine Java-Themen 2
alex_fairytail OOP Banknoten Algorithmus Teil 2 Allgemeine Java-Themen 13
2 ArrayList aktualisieren Algorithmus Allgemeine Java-Themen 11
alex_fairytail Methoden Banknoten Algorithmus Allgemeine Java-Themen 10
R Codehinweise: Algorithmus Größenvergleich von n Zahlen Allgemeine Java-Themen 5
SuperSeppel13 WTF?! Algorithmus-Geschwindigkeitstest Allgemeine Java-Themen 2
L Algorithmus für kürzesten Weg mit Wegpunkten Allgemeine Java-Themen 21
C Algorithmus Problem in Minesweeper Allgemeine Java-Themen 5
S Algorithmus um Labyrinth zu erzeugen Allgemeine Java-Themen 6
V Problem mit A* Pathfinder-Algorithmus Allgemeine Java-Themen 2
S Algorithmus um nächst folgende Primzahl zu berechnen Allgemeine Java-Themen 7
S Algorithmus Problem. Rechtecke effizient auf Spielfeld anordnen. Allgemeine Java-Themen 7
C Algorithmus-Hilfe Allgemeine Java-Themen 20
J Algorithmus Längenkombinationen? Allgemeine Java-Themen 7
M Kombinationen über rekursiven Algorithmus berechnen? Allgemeine Java-Themen 10
L Algorithmus für Poker-Hände Allgemeine Java-Themen 7
chik 2 return werte für Greedy-Algorithmus (gelöst) Allgemeine Java-Themen 3
D Abstruse Probleme mit eigenem replace Algorithmus Allgemeine Java-Themen 11
P RC4 Algorithmus Allgemeine Java-Themen 3
D RSA Verfahren - Erweiterter Euklidischer Algorithmus Allgemeine Java-Themen 4
C IBAN und Bic Validieren (Algorithmus) Allgemeine Java-Themen 10
P Problem mit A*-Algorithmus Allgemeine Java-Themen 12
M Wörter Algorithmus Allgemeine Java-Themen 7
M Algorithmus für automatische Zeilenumbrüche Allgemeine Java-Themen 12
K Postleitzahlen Algorithmus Allgemeine Java-Themen 12
G Problem mit Algorithmus Allgemeine Java-Themen 3
T Hilfe bei einem Algorithmus Allgemeine Java-Themen 2
S Stemming-Algorithmus gesucht (z.B. Porter) Allgemeine Java-Themen 2
Z A*-Algorithmus - Probleme mit offener/geschlossener Liste Allgemeine Java-Themen 7
S Javaimplementierung des MD5 Algorithmus Allgemeine Java-Themen 2
E Container-Pack-Algorithmus Allgemeine Java-Themen 4
G k nearest neighbor algorithmus Allgemeine Java-Themen 7
C HASH Algorithmus 2 Strings ergeben das Selbe. Allgemeine Java-Themen 2
P Page Rank Algorithmus implementieren Allgemeine Java-Themen 7
T Problem RSA-Algorithmus in Java? Allgemeine Java-Themen 2
minzel Hash-Algorithmus Allgemeine Java-Themen 9
Y komprimierung mittels Huffman-Algorithmus, bit-shifting. Allgemeine Java-Themen 2
K Algorithmus Allgemeine Java-Themen 10
C Algorithmus für Array Allgemeine Java-Themen 9
I Verschlüsselung mit Pwd. - User soll Algorithmus wählen Allgemeine Java-Themen 4
J fällt euch ein Algorithmus ein? Allgemeine Java-Themen 4
S Algorithmus für Sudoku Allgemeine Java-Themen 17
N Euklidischer Algorithmus in Java und keine Terminierung. Allgemeine Java-Themen 7
F Algorithmus für Sortierung gesucht Allgemeine Java-Themen 15
T Algorithmus verbessern Allgemeine Java-Themen 10
U Suche Algorithmus zur bestimmung des längsten Wegs Allgemeine Java-Themen 3
U Ford-Fulkerson Algorithmus gesucht Allgemeine Java-Themen 1
U Dijkstra Algorithmus gesucht Allgemeine Java-Themen 4
D Algorithmus für die Erkennung fehlerhafter Eingaben Allgemeine Java-Themen 4
I hash-algorithmus Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben