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
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Aufgabe</strong> 3<br />
Stefan Hansch, Markus Wirsing, <strong>Matthias</strong> <strong>Springer</strong><br />
289 fclose(pFileMap);<br />
290 fclose(pFileLog);<br />
291<br />
292 printf("Ausgabedatei karte_out.ppm wurde erstellt. Fertig.\n");<br />
293 return 0;<br />
294 }<br />
295 else<br />
296 {<br />
297 // Eingelesene Zeile in das Array umkopieren<br />
298 // Zeile auswerten<br />
299<br />
300 int beginCurrentRecord = 0; // An welcher Stelle beginnt der<br />
aktuelle "Datensatz" in der aktuellen Zeile?<br />
301 int recordCounter = 0; // Der Index des aktuellen<br />
Datensatzes (der wieviele Datensatz in dieser Zeile?)<br />
302<br />
303 // String anpassen (Terminatoren einfuegen, um einzelne Werte<br />
auszulesen)<br />
304 currentLine[2] = 0;<br />
305 currentLine[5] = 0;<br />
306 currentLine[8] = 0;<br />
307 currentLine[18] = 0;<br />
308 currentLine[27] = 0;<br />
309<br />
310 // Drei Datensaetze einlesen<br />
311 int currentTime = atoi(currentLine) * 3600 + atoi(currentLine +<br />
3) * 60 + atoi(currentLine + 6);<br />
312 double currentLat = atof(currentLine + 9);<br />
313 double currentLong = atof(currentLine + 19);<br />
314 db_pos_y[db_count_entries] = convertCoordinateToPixelNorth(<br />
currentLat);<br />
315 db_pos_x[db_count_entries] = convertCoordinateToPixelEast(<br />
currentLong);<br />
316 db_time[db_count_entries] = currentTime;<br />
317<br />
318 printf("Datensatz eingelesen: time=%d, latitude=%f, longitude=%f<br />
.\n", currentTime, currentLat, currentLong);<br />
319 db_count_entries++;<br />
320 }<br />
321 }<br />
322 }<br />
323<br />
324 /// *************************************************<br />
325 /// * Liest die naechste Zeile ohne Kommentare ein. *<br />
326 /// *************************************************<br />
327 void readLine(FILE * file_handle)<br />
328 {<br />
329 memset(currentLine, 10000, 0);<br />
330<br />
331 if (feof(file_handle))<br />
332 {<br />
333 currentLine[0] = 0;<br />
334 return;<br />
335 }<br />
336<br />
337 // Erstes Zeichen einlesen<br />
338 fread(currentLine, 1, 1, file_handle);<br />
339<br />
340 if (feof(file_handle))<br />
341 {<br />
342 currentLine[0] = 0;<br />
343 return;<br />
344 }<br />
345<br />
346 if (strcmp(currentLine, "#") == 0)<br />
347 {<br />
348 // Bei dieser Zeile handelt es sich um einen Kommentar<br />
349 char tmp = 0;<br />
350<br />
351 while (currentLine[0] != 10)<br />
352 {<br />
353 // Zeichen fuer Zeichen bis zum Zeilensprung einlesen<br />
354 fread(currentLine, 1, 1, file_handle);<br />
355 }<br />
22