4114 virus Virussimulation
Kategorie:Computer
Klasse:schwer
Eingabe:Siehe Spezifikation
Ausgabe:Siehe Spezifikation
Abzugebende Files: virus.txt, Main.java, virus/*.java , 3145.txt, 3286.txt

Kurzbeschreibung:

Die Verbreitung eines Virus / Wurms in einem Netzwerk soll simuliert werden.

Allgemeine Hinweise:

Aufgabenbeschreibung:

Die Aufgabe besteht darin, die Verbreitung eines Virus zu simulieren. Die Eigenschaften des Virus sind folgende: Es gibt zwei Arten von Computern: anfällige und nicht-anfällige. Trifft der Virus auf einen anfälligen Computer, so ist dieser infiziert. Der Virus verschickt sich dann per "email" an alle Adressen im "Adressbuch". Als Synonyme/Symbole für email-Adressen verwendet das Programm Identifikationsnummern, also Integer, die jeden Computer definieren (Jeder Computer hat genau eine Nummer.)

Eingabedaten:

Zuerst muss das Netzwerk definiert werden. Lesen Sie dazu alle beteiligten Computer in Form von Strings ein. Diese Strings sollen Befehlssequenzen enthalten, die wie folgt definiert sind: x(a,b,c,d)

x steht für die Identifikationsnummer des neu definierten Computers als Integer. In runden Klammern folgt das "Adressbuch" (a,b,c,d), eine Auflistung von Computer- identifikationsnummern getrennt durch Beistriche. Jedes Adressbuch muss mindestens einen Eintrag enthalten. Jeder Computer darf nur einmal definiert werden und sich nicht selbst im "Adressbuch" enthalten.

Nachdem alle Computer definiert sind, wird bestimmt, welche Computer anfällig sind für diesen Virus. In eckigen Klammern stehen, durch Beistriche getrennt, alle jene Computer- nummern, die den Virus weitersenden. (mindestens zwei) [a,b,c,d,e] Am Ende folgt in geschwungenen Klammern, der Computer, von dem aus die Infektion startet. {x} Abgeschlossen wird das Einlesen durch das Zeichen "="

Ausgabedaten:

Ausgegeben werden sollen die Nummern aller infizierter Computer in wertaufsteigender Reihenfolge, getrennt durch Beistriche. Ist kein Computer betroffen, soll das Zeichen "0" ausgegeben werden. Danach soll ein Zeilenvorschub folgen.

Fehlerbehandlung:

Sämtliche Eingabedatensätze sind immer vollständig einzulesen. Generell wird bei fehlerhaften Eingabedatensätzen nur eine einzige Fehlermeldung erzeugt, weitere Berechnungen werden nicht mehr durchgeführt. Waren die eingegebenen Daten inhaltlich nicht korrekt, so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.

Beispiele:

Eingabedaten
1(2,3) 5(4) 4(3,2) 3(2,4) 2(1,3) [1,3,4,5] {5} =

1(2,3,4,7) 2(1,3,5) 3(1) 4(1,3) 5(4,7) 6(4,5,7) 7(1,5,6) [2,3,4,5,6] {1} =

Ausgabedaten
3,4,5

0


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

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