4110 boolpars Verknupfung boolscher Ausdrucke
Kategorie:Informatik
Klasse:mittel
Eingabe:Siehe Spezifikation
Ausgabe:Siehe Spezifikation
Abzugebende Files: boolpars.txt, Main.java, boolpars/*.java , 2941.txt, 3084.txt

Kurzbeschreibung:

Es sollen boolsche Ausdrücke verknüpft werden.

Allgemeine Hinweise:

Aufgabenstellung:

Lesen Sie einen String ein, der eine boolsche Verknüpfung beschreibt. Es gibt zwei logische Zustände:

1) H...High 2) L...Low

Es können 3 Arten von Verknüpfungen von 2 logischen Zuständen auftreten.

1) AND-Gatter:

i1 i2 out
L L L
L H L
H L L
H H H

2) OR-Gatter:

i1 i2 out
L L L
L H H
H L H
H H H

3) XOR-Gatter:

i1 i2 out
L L L
L H H
H L H
H H L

 

Ein Klammernausdruck kennzeichnet eine Unterebene der Verknüpfungen. Eine Unterebene kann zusätzlich noch durch ein vorangestelltes NOT (L->H, H->L) noch negiert werden. Im Eingabe-String der Verknüpfungen wird für eine AND-Verknüpfung der Operator "a", für eine OR-Verknüpfung der Operator "o" und für eine XOR-Verknüpfung der Operator "x" verwendet. Die einzelnen Ebenen der Verknüpfungen werden durch Klammern "(", ")" getrennt. Geben Sie den endgültigen logischen Zustand der boolschen Verknüpfungen mit Hilfe einer rekursiven Prozedur an.

Eingabedaten:

Lesen Sie einen String ein, der die Verknüpfung boolscher Ausdrücke beschreibt. Der eingelesene String darf nur die Großbuchstaben "H" und "L", die Kleinbuchstaben "a", "o", "x" und "n" und die Zeichen "(" und ")" enthalten. Die logische Schaltung darf nicht aus mehr als 16 logischen Zuständen bestehen. Eine AND-Verknüpfung von zwei logischen Zuständen wird durch das Zeichen "a", eine OR-Verknüpfung durch das Zeichen "o" und eine XOR-Verknüpfung durch das Zeichen "x" dargestellt. Die Negation einer Unterebene wird durch das Zeichen "n" dargestellt. Enthält ein Verknüpfungsausdruck mehrere Ebenen, so müssen diese durch Klammern ("(",")") dargestellt werden.

Ausabedaten:

Bei korrekten Eingabedaten soll Ihr Programm den endgültigen logischen Zustand der Verknüpfungen ausgeben. Zum Schluß soll ein Zeilenvorschub ausgegeben werden.

Fehlerbehandlung:

Wenn bei der Eingabe die oben genannten Anforderungen nicht erfüllt werden, oder der eingelesene String keine gültige logische Verknüpfung beschreibt, dann ist die Meldung "FALSCHE EINGABE" gefolgt von einem Zeilenvorschub auszugeben.

Beispiele:

Eingabedaten
(Ha(Hx(LoH)))xn(n(HaL)o(Lan(LoL))

(HaH)o(Han(LoH))

Ausgabedaten
FALSCHE EINGABE

H


Testen:

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 Main < boolpars.i1 > boolpars.out1

Das erzeugte File boolpars.out1 können Sie dann mit dem mitgelieferten Outputfile boolpars.o1 vergleichen.