Neonof
Mitglied
Hallo zusammen,
das letzte Mal hat das mit der Hilfe so gut geklappt, dass ich mich mit folgendem Problem nun wieder an die Community hier wende:
Die Aufgabe im Rahmen meines CS-Studiums ist die, mit Hilfe der Mandelbrot-Menge ein Fraktal zu erstellen und in eine Bitmap-Datei zu speichern. Die Funktion zum Speichern der Pixel in einer Bitmap-Datei ist bereits in einer header-Datei vorgegeben und an dieser Stelle nicht so wichtig. Auch ist die Rechenmethode hier nicht wichtig. Mein Problem liegt in Zeile 23. Beim Schreiben auf das dynamische Array picture tritt folgender Fehler auf: "Zugriffsverletzung beim Schreiben an Position...". Folglich muss versucht worden sein, außerhalb des Arrays zu schreiben. Durch Testen habe ich sichergestellt, dass dieser Zugriffsfehler bereits beim ersten Schleifendurchlauf auftritt, also mit a = 0 und b = 0. Geschrieben wird also direkt auf die Adresse, auf die picture zeigt. An dieser Stelle bin ich ratlos.
Ich danke wieder einmal im Vorraus schon für Hilfestellungen.
das letzte Mal hat das mit der Hilfe so gut geklappt, dass ich mich mit folgendem Problem nun wieder an die Community hier wende:
Die Aufgabe im Rahmen meines CS-Studiums ist die, mit Hilfe der Mandelbrot-Menge ein Fraktal zu erstellen und in eine Bitmap-Datei zu speichern. Die Funktion zum Speichern der Pixel in einer Bitmap-Datei ist bereits in einer header-Datei vorgegeben und an dieser Stelle nicht so wichtig. Auch ist die Rechenmethode hier nicht wichtig. Mein Problem liegt in Zeile 23. Beim Schreiben auf das dynamische Array picture tritt folgender Fehler auf: "Zugriffsverletzung beim Schreiben an Position...". Folglich muss versucht worden sein, außerhalb des Arrays zu schreiben. Durch Testen habe ich sichergestellt, dass dieser Zugriffsfehler bereits beim ersten Schleifendurchlauf auftritt, also mit a = 0 und b = 0. Geschrieben wird also direkt auf die Adresse, auf die picture zeigt. An dieser Stelle bin ich ratlos.
C++:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int given(int x, int y, int a, int b, int max_n, int n) {
if (max_n == n || x*x + y*y > 4) return n;
return given(x*x-y*y+a, 2*x*y+b, a, b, max_n, n+1);
}
int main() {
system("cls");
int hight, width, max_n;
printf("\nBildma%ce (1920x1080): ", 225);
scanf("%dx%d", &hight, &width);
printf("\nMaximale Anzahl Iterationen: ");
scanf("%d", &max_n);
uint32_t *picture = (uint32_t)malloc(hight * width * 4);
for (int a = 0; a < width; a++) {
for (int b = 0; b < hight; b++) *(picture + b * width + a) = 0xFF00 - (max_n / given(0, 0, a, b, max_n, 1)) * 0xFF00;
}
printf("\n\nDas Bild wurde berechnet.");
bmp_create("Mandelbrot.bmp", picture, width, hight);
printf("\n\nDas Bild wurde erstellt.");
Sleep(2000);
}
Ich danke wieder einmal im Vorraus schon für Hilfestellungen.

Zuletzt bearbeitet: