13.11.2014 Aufrufe

28. BWINF, Runde 1, Aufgabe 3: Wegfehler - Matthias Springer .DE

28. BWINF, Runde 1, Aufgabe 3: Wegfehler - Matthias Springer .DE

28. BWINF, Runde 1, Aufgabe 3: Wegfehler - Matthias Springer .DE

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Aufgabe</strong> 3<br />

Stefan Hansch, Markus Wirsing, <strong>Matthias</strong> <strong>Springer</strong><br />

2 Programm-Dokumentation<br />

Das Programm wurde mit C++ geschrieben und als Linux-Binary kompiliert.<br />

Wenn der Quelltext unter Windows kompiliert werden soll, sind offensichtlich einige<br />

Änderungen notwendig (besonders im Zusammenhang mit Zeilenbrüchen).<br />

Zumindest kam es bei meinen Versuchen zu Problemen.<br />

Das Programm geht bei der Verarbeitung einer Log-Datei nach den folgenden<br />

Schritten vor.<br />

1. Einlesen der Bilddatei und der Log-Datei in den Arbeitsspeicher.<br />

2. Anwendung der Wahrscheinlichkeitsfunktion auf jeden Log-Eintrag.<br />

3. Bearbeitung der Bilddatei und Speichern der Bilddatei.<br />

2.1 Einlesen der Eingabedateien<br />

Das Einlesen der Eingabedateien funktioniert analog zu <strong>Aufgabe</strong> 5. Es wurden<br />

für die Bilddatei die gleichen Arrays und Bezeichnungen verwendet. Einige<br />

Zeilen Quelltext wurden sogar komplett übernommen. Die Log-Datei wird<br />

in drei Arrays übertragen, wobei db time[i] den Zeitpunkt des i-ten Eintrags,<br />

db pos x[i] die x-Koordinate und db pos y[i] die y-Koordinate bezeichnen. Der<br />

Zeitwert gibt die seit 00:00:00 Uhr vergangenen Sekunden an und wird nach<br />

der Formel db time[i] = stunden · 3600 + minuten · 60 + sekunden berechnet.<br />

Weil keine weiteren Anpassungen vorgenommen wurden, kann es zu den bereits<br />

genannten Problemen kommen.<br />

GPS-Koordinaten werden in Pixel-Koordinaten konvertiert. Jeder Pixel-Wert<br />

wird auf einen ganzen Integer-Wert abgerundet.<br />

Die Log-Datei wird zeilenweise eingelesen. Weil anfangs noch nicht bekannt<br />

ist, wie viele Zeilen gelesen werden müssen, werden eine Endlosschleife benutzt<br />

und so lange neue Zeilen eingelesen, bis die aktuelle Zeile weniger als 5 Zeichen<br />

lang ist. In einem solchen Fall springt das Programm in den ersten Teil der<br />

entsprechenden If-Struktur und fährt dort mit der Verarbeitung der eingelesenen<br />

Daten fort. Es gibt keine explizite Abbruchbedingung für die Endlosschleife.<br />

Diese terminiert dann, wenn das Programm nach der Verarbeitung der Daten<br />

terminiert.<br />

Es gibt einige Anforderungen an die Eingabedateien, die erfüllt sein müssen,<br />

damit die sie korrekt einlesen werden können.<br />

1. Die Log-Datei weist das gleiche Format wie die Testfälle von der <strong>BWINF</strong>-<br />

Seite auf. Insbesondere überprüft das Programm, ob die erste Zeile mit der<br />

Zeichenfolge TIME,LATITU<strong>DE</strong>,LONGITU<strong>DE</strong> übereinstimmt, um grob<br />

zu überprüfen, ob der Benutzer wirklich eine Log-Datei ausgewählt hat.<br />

2. Die Log-Datei hat den Dateinamen log.csv und die Bilddatei hat den Namen<br />

karte.ppm. Die Ausgabe erfolgt in die Datei karte out.ppm.<br />

3. Es handelt sich um eine 24-bit-PPM vom Typ P6, siehe auch <strong>Aufgabe</strong> 5.<br />

4. Es findet kein Zeitsprung von 23:59:59 Uhr auf 00:00:00 Uhr statt.<br />

5. Es liegen weniger als 2000 Log-Einträge vor.<br />

6. Die Log-Datei ist korrekt formatiert (wie in den <strong>BWINF</strong>-Testfällen).<br />

8

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!