1154 |
disjnorm |
disjunkte Normalform |
Kategorie: | MATHEMATIK |
Klasse: | schwer |
Eingabe: | Strings |
Ausgabe: | Strings |
|
Abzugebende Files: disjnorm.txt, disjnorm.java |
Kurzbeschreibung:
Eine bool'sche Funktion in disjunktiver Normalform wird eingelesen; das entsprechende Karnaugh-Veitsch-Diagramm wird ausgegeben.
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:
Lesen Sie eine bool'sche Funktion in der disjunktiven Normalform ein. Eine
disjunktive Normalform besteht aus Diskunktionen von Vollkunjunktionen. (Siehe
auch Einführung in die Informatik!)
Dazu wird folgende Notation verwendet: Es gibt genau vier Eingabevariablen,
nämlich A,B,C und D. Diese werden immer in dieser Reihenfolge angegeben; es
müssen immer alle vier Variablen vorkommen. Negierte Variablen werden klein
geschrieben; es werden keine Operatoren angegeben.
Jede Vollkonjunktion wird in einem eigenen String eingelesen. Am Ende des Ausdrucks wird ein "=" geschrieben.
Beispiel:
wird durch AbcD aBcD aBCd = dargestellt.
Für diesen Ausdruck soll Ihr Programm eine Karnaugh-Veitch-Tabelle mit
folgender Variablenanornung erstellen:
Verwenden Sie die Zeichen "0" und "1" zum Beschreiben der logischen Zustände
"falsch" und "wahr".
Eingabedaten:
Lesen Sie die Strings ein, die zusammen die disjunktive Normalform darstellen.
Diese Strings müssen jeweils 4 Zeichen lang sein und die Buchstaben A, B, C,
und D in genau dieser Reihenfolge beinhalten (wobei es wie gesagt bedeutsam
ist, ob die Buchstaben groß oder klein geschrieben werden).
Es dürfen keine zwei gleichen Strings eingegeben werden. Das Ende des Datensatzes wird durch das Zeichen "=" markiert.
Ausgabedaten:
Bei korrekten Eingabesätzen soll Ihr Programm die vier Zeilen des
Karnaugh-Veitch-Diagramms ausgeben, also vier Strings zu je vier Zeichen, wobei nur
die Zeichen "0" und "1" vorkommen (der "Rahmen" der Tabelle 'cCCc' etc. in der
oberen Darstellung dient nur zur Erläuterung und soll in der Ausgabe nicht
aufscheinen).
Trennen Sie die vier Strings durch jeweils ein Leerzeichen und geben Sie am
Ende einen Zeilenvorschub aus.
Fehlerbehandlung:
Sämtliche Eingabedatensätze sind immer bis zum definierten Endezeichen einzulesen.
Generell wird bei fehlerhaften Eingabedatensätzen nur eine einzige Fehlermeldung erzeugt, weitere Berechnungen werden nicht mehr durchgeführt.
Sind die Datentypen bei allen Eingaben richtig, die
eingegebenen Daten aber inhaltlich nicht korrekt oder erfüllen nicht die
Bedingungen, so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.
Beispiele:
Eingabedaten
|
AbCD ABCD aBCD AbCd =
abCD abCd AbcD AbCD Abcd ABCD aBCD aBcd =
|
Ausgabedaten
|
0000 0110 0100 0100
0110 1101 0100 0101
|
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 disjnorm < disjnorm.i1 > disjnorm.out1
Das erzeugte File disjnorm.out1 können Sie dann mit dem mitgelieferten Outputfile disjnorm.o1 vergleichen.