matse Geschrieben 20. Juli 2010 Geschrieben 20. Juli 2010 Hallo zusammen! Ich bekomme die Fehlermeldung "Eine Zugriffsverletzung (Segmentation Fault) trat in Ihrem Programm auf" bei folgendem Programm: /* Das Programm sollte ein Polynom mithilfe des Horner-Schemas auswerten */ #include <stdio.h> int horner(int a[], int x, int k){ /* x ist die Variable eines Polynoms */ int h; /* k ist der Grad des Polynoms */ /* a ist ein Feld, in welchem die Polynomkoeffizienten gespeichert if (k>0) werden */ h = horner(a, x, k-1); else return a[k]; return h*x+a[k]; } main(){ /* Hier komme ich gar nicht rein. Der Compiler bleibt an der horner-Funktion hängen */ int n, i; int array[n]; int x, result; printf("\nBitte geben Sie an, Polynom welchen Grades möchten Sie auswerten: "); scanf("%i", &n); for (i=0; i<=n; i++){ printf("\na_%i: ", i); scanf("%i", &array[i]); } printf("\n Bitte geben Sie x ein: "); scanf("%i", &x); result = horner(array, x, n); printf("Das Ergebnis ist: %i", result); } Zitieren
carstenj Geschrieben 20. Juli 2010 Geschrieben 20. Juli 2010 Hi, du definierst ein Array mit einer Unbekannten. Das geht nicht. Was glaubst du, wie groß dein Array ist? int array[n]; Zitieren
Klotzkopp Geschrieben 20. Juli 2010 Geschrieben 20. Juli 2010 Hier komme ich gar nicht rein. Der Compiler bleibt an der horner-Funktion hängenKann nicht sein. Entweder liefert der Compiler einen Fehler (den du dann bitte nennst), oder du kannst das Programm erstellen und ausführen und es kommt zu einem Laufzeitfehler, dann hat der Compiler aber nichts mehr damit zu tun. Ich glaube übrigens nicht, dass int array[n];etwas sinnvolles tun kann, wenn n an dieser Stelle noch gar nicht initialisiert ist. So legst du jedenfalls kein Array an, dass "magisch" die richtige Größe hat, sobald n einen Wert bekommt. Zitieren
matse Geschrieben 20. Juli 2010 Autor Geschrieben 20. Juli 2010 Danke euch beiden! Das array[n] war das Problem. Ich habe das jetzt einfach nach der Eingabe von n deklariert. Noch mal vielen Dank! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.