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:

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.