1200 | farb1 | Farbkonvertierung 2 | ||||||||
| ||||||||||
Abzugebende Files: farb1.txt, farb1.java |
Stellen Sie sich den RGB-Farbraum als dreidimensionalen Würfel vor (jeweils 0..255, 0..255, 0..255), wobei jede Koordinatenachse einer der Farbkomponenten entspricht. Um eine Farbe aus diesem Farbraum in einen kleineren Farbraum zu konvertieren, muß der RGB-Farbwürfel in Quader unterteilt werden.
Ihr Programm soll die eingelesen Farbwerte in einen 8-Bit-Farbwert umwandeln, wobei das Reduktionverhältnis der Helligkeiten 256:256:256 -> 8:8:4 (Rot:Grün:Blau) sein soll. Dabei sollen die Farbgrenzen gerundet werden. Um bei einer Farbe (z.B. Rot) auf 8 Abstufungen zu kommen muessen Sie 255 : 7 dividieren. Bei Blau 255 : 3.
Bei dieser Umwandlung wird festgestellt, in welchem Teilquader der eingelesene Farbwert liegt. Als Ergebnis sollen die RGB-Koordinaten des nächstgelegenen und des entferntesten Eckpunktes dieses Quaders ausgegeben werden. Falls ein Farbpunkt genau einem Eckpunkt entspricht soll dieser Farbwert zweimal ausgegeben werden (Der naechste und weiteste sind ident). Wenn der Punkt genau auf der Grenze zweier Quader liegt, so wählen Sie jenen, dessen Koordinaten kleiner sind.
Enthält der Eingabedatensatz einen ungültigen Datentyp, so soll einmal das Zeichen "?", gefolgt von einem Zeilenvorschub, ausgegeben werden.
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.
Eingabedaten |
100 100 100
120 130 140 |
Ausgabedaten |
109 109 85 73 73 170
109 146 170 146 109 85 |
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 farb1 < farb1.i1 > farb1.out1
Das erzeugte File farb1.out1 können Sie dann mit dem mitgelieferten Outputfile farb1.o1 vergleichen.