Donnerstag, 7. Januar 2010
Klammerprüfung mittels Stack
Schreiben Sie ein Java-Programm, welches zeichenweise von der Standardeingabe liest und prüft, ob die eingegebenen Klammern eine gültige Klammerung mit ([{}])
ergeben.
Beispiele für korrekte Klammerung:
()([])[[([])]]{}
x{abc(sdf(c))asd}asx
()
[]
((()))
{{{(())}}}
Beispiele für falsche Klammerung:
(()
[])
(([)])
Das Programm soll nur ausgeben, ob die Klammerung korrekt ist. Das Programm soll alle Klammern bis EOF
prüfen (bei den Beispielen oben ist jeweils eine Zeile eine Eingabe!).
Verwenden Sie für die Implementierung einen (selbstprogrammierten) Stack (eigene Klasse):
void push(char elem); // Element oben auf Stack
char pop(); // oberstes Element
boolean isEmpty(); // false wenn nicht leer
Erweiterung um Programmargumente und Dateien
Erweitern Sie das Programm so, dass eine Hilfe ausgegeben werden kann, mehrere Eingabedateien und optional eine Ausgabedatei angegeben werden kann. Eine Eingabedatei entspricht einem Klammerausdruck (der natürlich aus mehreren Zeilen bestehen kann). Wird keine Eingabedatei angegeben, so ist von stdin
zu lesen.
Aufruf:
java Klammer [-h|-o out] [eingabedateien...]
-h ... Hilfe
-o out ... Ausgabe in die Datei out
eingabedateien ... optional mehrere Eingabedateien
Detaillierte Fehlermeldungen
Erweitern Sie das Programm um die Ausgabe einer detaillierten Fehlermeldung. Welcher Fehler wurde gefunden? Wo wurde der Fehler gefunden (Zeile/Spalte)?
mögliche Fehler
falsche Klammer-Zuzu viele Klammern-Zuzu wenig Klammern-Zu
Abonnieren Posts [Atom]
Kommentar veröffentlichen