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
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 />
42 double db_p_segment[2000];<br />
43<br />
44 // Konstanten fuer Koordinatenecken<br />
45 const double coord_left = 6.0711;<br />
46 const double coord_right = 6.0918;<br />
47 const double coord_top = 50.7820;<br />
48 const double coord_bottom = 50.7716;<br />
49<br />
50 /// *************************************************<br />
51 /// * Hier startet das Programm. *<br />
52 /// *************************************************<br />
53 int main(int argc, char** argv)<br />
54 {<br />
55 // freopen( "file.txt", "w", stdout );<br />
56<br />
57 FILE * pFileMap = fopen("karte.ppm", "r");<br />
58 FILE * pFileLog = fopen("log.csv", "r");<br />
59<br />
60 // Maximale Laenge einer Zeile im Header: 5000 Zeichen (5 KB)<br />
61 char fbuffer_header[5000];<br />
62 memset(fbuffer_header , 5000, 0);<br />
63 fread(fbuffer_header , 2, 1, pFileMap);<br />
64<br />
65 // Dateiformat ueberpruefen<br />
66 if (strcmp(fbuffer_header , "P6") != 0)<br />
67 {<br />
68 printf("Die Eingabedatei karte.ppm weist ein unerwartetes Format auf<br />
und kann nicht verarbeitet werden (nur PPM-P6).\n");<br />
69 return 0;<br />
70 }<br />
71<br />
72 // Zeilenumbruch einlesen<br />
73 fread(fbuffer_header , 1, 1, pFileMap);<br />
74<br />
75 // Proportionen einlesen<br />
76 readLine(pFileMap);<br />
77 sscanf(currentLine, "%d %d", &proportions[0], &proportions[1]);<br />
78 printf("Proportionen der Datei karte.ppm: %d x %d Pixel.\n", proportions<br />
[0], proportions[1]);<br />
79<br />
80 // Farbtiefe auslesen<br />
81 readLine(pFileMap);<br />
82<br />
83 if (strcmp(currentLine, "255") != 0)<br />
84 {<br />
85 printf("Die Eingabedatei karte.ppm weist ein unerwartetes Format auf<br />
und kann nicht verarbeitet werden (nur 24-bit-Farbtiefe).\n");<br />
86 return 0;<br />
87 }<br />
88<br />
89 printf("Reserviere Speicherplatz. Dieser Vorgang kann einige Sekunden<br />
dauern...\n");<br />
90<br />
91 // Matrix: Enthaelt die ganze Bilddatei<br />
92 // Speicher dynamisch allokieren<br />
93 matrix = new unsigned char**[proportions[0]];<br />
94<br />
95 for (int i = 0; i < proportions[0]; i++)<br />
96 {<br />
97 matrix[i] = new unsigned char*[proportions[1]];<br />
98<br />
99 for (int j = 0; j < proportions[1]; j++)<br />
100 {<br />
101 matrix[i][j] = new unsigned char[3];<br />
102 }<br />
103 }<br />
104<br />
105 // Matrix fuellen<br />
106 printf("Lese alle Pixel in den Arbeitsspeicher. Dieser Vorgang kann<br />
einige Sekunden dauern...\n");<br />
107<br />
108 for (int i = 0; i < proportions[1]; i++)<br />
109 {<br />
110 // Iteriere ueber alle "Zeilen"<br />
18