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:
-
Das Beispiel dieser Runde ist objektorientiert und als package zu lösen. Nachdem Sie das Programm mittels Dialogprogramm abgegeben haben, gehen Sie zu einem Tutor. Der Tutor überprüft, ob Sie Ihr Programm spezifikationsgemäß programmiert haben.
-
Unmittelbar nach der erfolgreichen Abgabe am Dialogprogramm können sie bereits die nächste Runde abholen.
-
Sie haben Lösungen (und Spezifikationen) aus der 3. Runde von anderen Studenten erhalten. Testen Sie alle mitgelieferten Lösungen und wählen Sie eine Lösung aus, die Ihnen hinsichtlich Lesbarkeit, Programmierstil,
Korrektheit und Verwendbarkeit am besten erscheint.
- Merken Sie sich die Lösungsnummer des ausgewählten Beispieles für die Abgabe. Diese Nummer müssen Sie bei der Abgabe angeben. Geben Sie nur jene Lösungsnummer an, die Sie auch wirklich ausgewählt haben.
-
Erstellen Sie für alle Lösungen zu diesem Beispiel (siehe: "Abzugebende Files") ein File mit dem Namen <number>.txt. und schreiben in dieses File ein Review (=Kritik) zu der Lösung. Diese Reviews erhalten dann die TeilnehmerIn von dem/der die Lösung stammt. Beachten Sie das bitte bei der Form Ihrer Kritik.
-
Sie können für die Lösung der gewählten Aufgabe eine oder mehrere Klassen programmieren. Die Klasse Main.java muß aber die Methode main enthalten. Weiters müssen alle anderen abgegebenen Klassenfiles in Verzeichnis xortree vorliegen, Pfadangaben sind nicht gestattet.
-
Achten Sie auf die korrekten Konventionen der Groß/Kleinschreibung bei
Klassen und Methoden!
-
Falls Ihre Lösung einen Exit Code zurueckliefert, so
achten Sie darauf, dass dieser den Wert 0 hat.
Bei allen anderen Werten können Probleme bei der Bewertung und in weiterer
Folge unbeabsichtigte Punkteabzüge auftreten.
- Ihre Lösung darf nur genau jene Ausgabedaten liefern, die in der
Spezifikation verlangt werden. Die Ausgaben Ihrer Lösung werden automatisch mit Referenzdaten verglichen; etwaige Abweichungen führen zu Punkteabzügen!
- Testen Sie Ihre Lösung vor der Abgabe mit der mitgelieferten Eingabedatei. Geben Sie Ihre Lösung erst ab, wenn die Ausgaben Ihrer Lösung mit der ebenfalls mitgelieferten Ausgabedatei übereinstimmen! Testen Sie Ihre Lösung auch mit anderen Eingabedaten.
-
Verwenden Sie nur das von uns mitgelieferten Package eprog
für Ihre Ein/Ausgaben. Klassen, 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 daher mit 0 Punkten bewertet!
- Schreiben Sie Ihre Klasse(n) möglichst allgemein und kommentieren
Sie diese gut. Erstellen Sie weiters eine übersichtliche und
verständliche Dokumentation. Damit erhöhen Sie Ihre Chancen,
daß andere Studenten in der nächsten Runde Ihre Lösung
wählen und Ihnen damit zu Zusatzpunkten verhelfen!
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:
- die Nummern der XOR-Glieder durchgehend von 1 an nummeriert werden müssen.
- Die Struktur des logischen Netzwerkes baumförmig ist (z.B. [Nummer1] !=
[Nummer2]).
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.