1005 |
boolsyn |
Syntaxtest fuer Boolsche Algebra |
Kategorie: | String |
Klasse: | mittel |
Eingabe: | String |
Ausgabe: | String |
|
Abzugebende Files: boolsyn.txt, boolsyn.java |
Kurzbeschreibung:
Eine bool'scher Ausdruck soll auf syntaktische Korrektheit untersucht werden.
Allgemeine Hinweise:
-
Ihr Programm darf nur genau jene Ausgabedaten liefern, die in der Spezifikation
verlangt werden. Die Ausgaben Ihres Programmes werden automatisch mit
Referenzdaten verglichen; etwaige Abweichungen führen zu Punkteabzügen!
-
Testen Sie Ihr Programm vor der Abgabe mit der mitgelieferten Eingabedatei.
Geben Sie Ihre Lösung erst ab, wenn die Ausgaben Ihres Programmes mit der
ebenfalls mitgelieferten Ausgabedatei übereinstimmen! Testen Sie Ihr
Programm auch mit anderen Eingabedaten.
-
Verwenden Sie nur das von uns mitgelieferten Package eprog
für Ihre Ein/Ausgaben. Programme, die Packages oder Klassen ausserhalb der verwendeten Übungsumgebung (Java2, Standard Edition, Version 1.3.1_1) verwenden, können von uns
nicht getestet werden und werden mit 0 Punkten bewertet!
-
Schreiben Sie Ihr Programm möglichst allgemein und kommentieren Sie es gut.
Erstellen Sie weiters eine übersichtliche und verständliche Dokumentation.
Damit erhöhen Sie Ihre Chancen, daß andere Studenten in den nächsten Runden
Ihr Programm wählen und Ihnen damit zu Zusatzpunkten verhelfen!
Aufgabenstellung:
Ein aussagenlogischer ("bool'scher") Ausdruck wird eingelesen und soll auf die
Einhaltung folgender Syntaxregeln untersucht werden:
- Nur folgende Zeichen sind zulässig: ( ) a b c V & - =
Dabei stehen "a","b" und "c" für Variablen, "V" für die ODER-Verknüpfung
(Disjunktion), "&" für die UND-Verknüpfung (Konjunktion) und "-" für
die NICHT-Verknüpfung (Negation). Die Zeichen "V" und "&" werden hier auch
als Junktoren bezeichnet, "-" als Negationsoperator.
- Der Ausdruck muß aus mindestens 2 Variablen und einem Junktor bestehen.
- Der Ausdruck muß mit dem Satzendezeichen "=" abgeschlossen sein.
- Wenn Klammern verwendet werden, muß die Klammerung korrekt sein (d.h., zu
jeder öffnenden Klammer muß eine schließende Klammer gehören und umgekehrt;
die öffnende Klammer muß links von der zugehörigen schließenden Klammer
stehen).
- Auf eine Variable oder eine schließende Klammer muß ein Junktor, eine
schließende Klammer oder das Satzendezeichen folgen.
- Auf einen Junktor, den Negationsoperator oder eine öffnende Klammer muß eine
Variable, eine öffnende Klammer oder der Negationsoperator folgen.
Eingabedaten:
Lesen Sie einen String ein, der einen Ausdruck entsprechend den obigen Regeln
enthalten soll. Unterscheiden Sie dabei zwischen Groß- und Kleinbuchstaben.
Ausgabedaten:
Bei korrekten Ausdrücken soll Ihr Programm "OK", gefolgt von einem Zeilenvorschub, ausgeben.
Fehlerbehandlung:
Bei falschen Ausdrücken soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem
Zeilenvorschub, ausgeben.
Beispiele:
Eingabedaten
|
((aVb)=
(A&B)=
(a&b)=
|
Ausgabedaten
|
FALSCHE EINGABE
FALSCHE EINGABE
OK
|
Bemerkung: Diese Beispiele dienen nur zur Verdeutlichung der Spezifikation und
müssen nicht korrekt formatiert sein. Die korrekte Formatierung entnehmen Sie
bitte dem mitgelieferten Outputfile. Zum Testen Ihrer Lösung
können Sie aus den mitgelieferten Eingabedaten wie folgt eine Ausgabedatei
erzeugen:
java boolsyn < boolsyn.i1 > boolsyn.out1
Das erzeugte File boolsyn.out1 können Sie dann mit dem mitgelieferten Outputfile boolsyn.o1 vergleichen.