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); }
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];
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.
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!
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden