4109 xortree Antivalenznetzwerk
Kategorie:Computer
Klasse:leicht
Eingabe:Siehe Spezifikation
Ausgabe:Siehe Spezifikation
Abzugebende Files: xortree.txt, Main.java, xortree/*.java , 4751.txt, 4908.txt

Kurzbeschreibung:

Schreiben Sie ein Programm, dass die Definition eines Antivalenznetzwerkes einleißt und das Ergebnis ausgiebt.

Allgemeine Hinweise:

Aufgabenbeschreibung:

Die Aufgabe beteht darin ein logisches Netzwerk von Antivalenz(XOR)-Gliedern zu simulieren. Dabei werden die Definition des Netzwerkes und die Eingabegrößen als String eingegeben und das Ergebnis des simulierten logischen Schaltkreises ausgegeben. Die Struktur des Netzwerkes muss Baumförmig sein, wobei man sich die Astenden als Eingänge und der Stamm als Ausgabe vorstellen kann. Die Knoten des Baumes sind die XOR-Bausteine, von denen jeder 2 Eingänge(e1,e2) und einen Ausgang(a) besitzt.

Die Wahrheitstabelle eines Xor-Gliedes sieht folgendermaßen aus:

e1 e2 a
0 0 0
0 1 1
1 0 1
1 1 0

Ein Beispiel für ein XOR-Netz wäre:

Eingabedaten:

Die Eingabe erfolg über Strings der Form:

[Eingang]XOR[Nummer1]:=XOR[Nummer2]

z.B. 1XOR1:=XOR2

Dies bedeutet, dass das XOR-Glied der Nummer 1 durch den Eingang e1 mit dem Ausgangs des XOR-Glied der Nummer 2 verbunden ist.

Hierbei ist zu beachten, dass:

Es ist jedoch auch möglich eienm Eingang eines XOR-Gliedes nicht einen Ausgang eines anderen Gliedes sondern eine fixe Größe zuzuornen. Dies geschieht mit folgendem Befehl:

[Eingang]XOR[Nummer]:=[0/1]

z.B. 1XOR1:=0

Hierbei ist zu beachten, dass zumindest alle "Astenden des Baumes" (d.h. freien Eingänge von XOR-Gliedern) auf diese Weise Werte zugewiesen werden.

Mit dem Zeichen "=" ist die Eingabe abzuschließen. Eine korrekte Definition eines XOR-Netzwerkes wäre z.B. demnach: 1XOR1:=XOR2 2XOR2:=XOR3 2XOR1:=0 1XOR2:=0 1XOR3:=0 2XOR3:=1 = Dies würde zu dem Ergebnis "1" führen. (Bild siehe oben)

Ausgabedaten:

Das Programm soll bei korekter Eingabe den Wert "0" oder "1" gefolgt von einem Zeilenvorschub ausgeben.

Fehlerbehandlung:

Fehler können sowohl syntaktischer Art als auch semantischer Art sein. Tritt ein Fehler auf, so soll das Programm alle weiteren Berechnungen abbrechen und "FALSCHE EINGABE" gefolgt von einem Zeilenvorschub ausgeben.

Beispiele:

Eingabedaten
1XOR1:=XOR2 2XOR1:=0 1XOR2:=0 =

1XOR1:=XOR2 2XOR1:=XOR3 1XOR2:=1 2XOR2:=1 1XOR3:=0 2XOR3:=0 =

Ausgabedaten
FALSCHE EINGABE

1


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 < xortree.i1 > xortree.out1

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