Mittwoch, 2. März 2011

 

Klammerprüfung mittels Stack (POS1: 2A, 2C)

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-Zu
zu viele Klammern-Zu
zu wenig Klammern-Zu

Labels: , ,


Kommentare:

Kommentar veröffentlichen

Abonnieren Kommentare zum Post [Atom]





<< Startseite

This page is powered by Blogger. Isn't yours?

Abonnieren Posts [Atom]