1204 |
boolver |
Vereinfachen von bool'schen Ausdrücken |
Kategorie: | String |
Klasse: | mittel |
Eingabe: | String |
Ausgabe: | String |
|
Abzugebende Files: boolver.txt, boolver.java |
Kurzbeschreibung:
Vereinfachen von Boolschen Ausdrücken (Disjunktion von 2 Vollkonjunktionen)
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:
Ihr Programm soll einen Boolsche Ausdruck der Form
einlesen und wenn möglich
vereinfachen.
Die in den beiden Klammern befindlichen Ausdrücke sind Vollkonjunktionen.
Die Vereinfachung kann nur dann durchgeführt werden, wenn sich die beiden
Vollkonjunktionen nur durch genau eine Negierung voneinenader untescheiden.
Sind die Bedingungen für eine Vereinfachung erfüllt, so ist das Ergebnis
der Vereinfachung der 1.Teilausdruck ohne die sich im 1. und 2. Teilausdruck unterscheidende Variable.
Bsp.:
bzw., wenn die beiden Ausdrücke identisch sind dann ist das Ergebnis der
1. Teilausdruck.
Eingabedaten:
Ein zu vereinfachender Ausdruck wird als String der Form
"(<1.Ausdruck>)(<2.Ausdruck>)" eingelesen.
Die Konjunktionen (UND-Verknüpfungen) in den Teilausdrücken bestehen
aus einer Auflistung von Variablen ("a" bis maximal "z" => maximal 26
verschiedenen Variablen) ohne Trennzeichen.
Variable in negierter Form haben ein vorgestelltes "-"
Erlaubte Zeichen sind also '(', ')', '-' und die Kleinbuchstaben a-z.
In den Teilausdrücken darf jede Variable max. 1 mal auftreten.
Die Reihenfolge der Variablen in den Teilausdrücken muß nicht sortiert sein!
Keiner der Teilausdrücke darf leer sein.
Ausgabedaten:
Bei korrekten Eingabesätzen soll Ihr Programm das Ergebnis der Vereinfachung
entsprechend dem Eingabeformat bzw., wenn nicht vereinfachbar die Meldung
"NICHT VEREINFACHBAR" gefolgt von einem Zeilenvorschub, ausgeben.
Fehlerbehandlung:
Sind die eingegebenen Daten inhaltlich nicht korrekt oder erfüllen nicht die Bedingungen (z.B. zuviele Spielzüge), so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.
Beispiele:
Eingabedaten
|
(abfg)(ac-b)
(acdb)(a-dcb)
|
Ausgabedaten
|
NICHT VEREINFACHBAR
(acb)
|
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 boolver < boolver.i1 > boolver.out1
Das erzeugte File boolver.out1 können Sie dann mit dem mitgelieferten Outputfile boolver.o1 vergleichen.